我正在使用导航图在片段之间导航。一切正常,但我想知道如何以优雅的方式传递参数名称。
这是我的代码片段navSheet.xml:
源片段动作:
<action
android:id="@+id/action_go_to_B"
app:destination="@id/id_fragment_b">
<argument
android:name="@string/fragment_b_arg_key_name"
app:argType="integer"/>
</action>
Run Code Online (Sandbox Code Playgroud)
目标片段:
<fragment
android:id="@+id/id_fragment_b"
android:name="pl.asd.FragmentB"
tools:layout="@layout/fragment_b">
<argument
android:name="@string/fragment_b_arg_key_name"
app:argType="integer"/>
</fragment>
Run Code Online (Sandbox Code Playgroud)
我将我的参数键存储在string.xml:
<string name="fragment_b_arg_key_name" translatable="false">arg_fragment_b</string>
Run Code Online (Sandbox Code Playgroud)
最后,我尝试在目标片段中得到我的论点:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
arguments?.let {
selectedId = it.getInt(getString(R.string.fragment_b_arg_key_name))
}
}
Run Code Online (Sandbox Code Playgroud)
问题在于android:name="@string/fragment_b_arg_key_name". 我在调试器上看到捆绑包密钥不正确。它应该是这样的:
Bundle[{arg_fragment_b=-730732511}]
但我得到:
Bundle[{@string/fragment_b_arg_key_name=-730732511}]
两个问题:
在 navSheet.xml 中使用 a 有什么问题@string/fragment_b_arg_key_name,因此它不返回内容,@string/fragment_b_arg_key_name而是返回原始引用。
如何不对我在片段navSheet.xml和其他类中使用的参数名称进行硬编码?如何将这些密钥存储在一个地方?
xml android android-resources android-bundle android-architecture-navigation
我有一个课程延伸BroadcastReceiver.在收到短信时,我想将信息传递给我的主要活动类,以便在一个方框中显示文本(如果已存在文本,则附加).
public class SmsReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent)
{
Intent i = new Intent(context, MainActivity.class);
i.putExtra("updatedString","Hello");
context.startActivity(i);
}
}
Run Code Online (Sandbox Code Playgroud)
MainActivity.java
public class MainActivity extends Activity{
private TextView results;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Bundle extras = getIntent().getExtras();
if(extras!=null){
results = (TextView) findViewById(R.id.results);
results.setVisibility(View.VISIBLE);
results.append(extras.getString("updatedString"));
}
}
Run Code Online (Sandbox Code Playgroud)
我只有一个活动类(MainActivity.java).但是,当我这样做时,我得到一个异常无法暂停活动.
我在我的片段类中调用它:
@OnClick(R.id.blockedLinkLayout)
public void onBlockedClick(){
final FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.content, new SettingsBlockedUsersFragment(), FRAGMENT_TAG);
ft.commit();
}
Run Code Online (Sandbox Code Playgroud)
它只是用选择的片段替换我当前的片段.
我的问题是,如何String使用FragmentTransaction从我的父片段向我的子片段发送一些数据(例如值)?
android send android-fragments android-bundle fragment-transitions
老实说,在询问之前我对此进行了一些搜索。如何从活动接收意图fragmentactivity我正在尝试使用viewpager。我在获取参数时遇到错误Bundle extras = getArguments();
public class SingleViewActivity extends FragmentActivity {
ImageView imageView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_page_view);
ArrayList<Listitem> personArrayList = new ArrayList<Listitem>();
// Listitem item = new Listitem("1", "http://developer.android.com/assets/images/android_logo.png");//I used to add it staticly
Bundle extras = getArguments();
if (extras != null) {
extras = extras.getParcelableArrayList(ARG_PERSON_LIST);
personArrayList.add(item); }
// DemoObjectFragment f = DemoObjectFragment.newInstance(personArrayList);
ViewPager mViewPager = (ViewPager) findViewById(R.id.pager);
Log.d("s", "singleview");
DemoCollectionPagerAdapter mDemoCollectionPagerAdapter = new DemoCollectionPagerAdapter( getSupportFragmentManager(),personArrayList);
mViewPager.setAdapter(mDemoCollectionPagerAdapter);
Run Code Online (Sandbox Code Playgroud) 发布中的唯一文件是构建 apk。尽管在生成签名包时已选择发布,但 aab 文件仅位于调试文件夹中。
我正在寻找一种从 Android App Bundle 生成 APK 的解决方案,这将帮助我共享该应用程序进行内部测试,而不是在 Google Play Beta 测试上发布。
有没有使用bundletool的方法或命令?
我知道以前有人问过这个问题,但到目前为止给出的答案都没有对我有任何帮助。
我有一个 viewpager,它填充了来自 FragmentStatePagerAdapter 的片段(android.support.v4.app.Fragment)。其中一些片段包含在方向更改时需要保留的逻辑,例如跟踪当前选择了哪个视图。
但是,尽管我将相关数据保存在 onSaveInstanceState 中,但savedInstanceState 始终为空。我可以通过将数据存储在一个静态变量中来解决这个问题(因为我每个片段只有一个实例对我有用)但我发现这是一个非常丑陋的解决方案,必须有一种正确的方法来做到这一点。
这是在旋转时不保留其状态的片段之一:
public class PriceSelectFragment extends Fragment {
private TableRow mSelected;
private int mSelectedPos = 0;
// newInstance constructor for creating fragment with arguments
public static PriceSelectFragment newInstance() {
PriceSelectFragment fragmentFirst = new PriceSelectFragment();
return fragmentFirst;
}
public PriceSelectFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_price_select, container, false);
TableLayout mTable = …Run Code Online (Sandbox Code Playgroud) 案件
我有一个应用程序
当我在调试模式下使用它时,一切正常!
但是当我尝试构建用于发布的 apk 包并尝试通过 Play 商店安装应用程序时,缺少 .so 文件,我对 apk 进行了逆向工程,但找不到单个 .so 文件或任何 lib 文件夹
但是当我使用播放控制台和 android studio 分析包时,它包含所有带有相应 .so 文件的 abi 文件夹
这是我的应用程序 gradle 文件
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
android {
compileSdkVersion 28
defaultConfig {
applicationId "com.test"
minSdkVersion 16
targetSdkVersion 28
versionCode 38
versionName "3.0.8"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
// Enabling multidex support.
multiDexEnabled true
//render script
renderscriptTargetApi 28
renderscriptSupportModeEnabled true
externalNativeBuild {
cmake {
cppFlags "-frtti -fexceptions"
arguments "-DANDROID_STL=c++_shared"
}
}
}
buildTypes {
release {
minifyEnabled …Run Code Online (Sandbox Code Playgroud) android android-ndk android-studio android-gradle-plugin android-bundle
一位开发者错误地在发布前将该应用程序发布到了Google Play 上。然后出于安全原因,它没有被发布。
然后创建内部测试版本,选择国家/地区,添加测试人员...(使用 .oob 捆绑包)。
每个人都收到了邀请,我们向测试人员分享了应用程序链接,但应用程序没有显示。然后我们注意到,跟踪摘要 -内部测试的非活动状态。
什么可能使内部测试状态处于活动状态?(不能选择重新发布应用程序,因为我们不希望每个人都可以使用该应用程序)
我正在toolargetool调查应用程序崩溃的原因TransactionTooLargeException。
androidx.lifecycle.BundlableSavedStateRegistry.key当我将应用程序置于后台时,我看到这个密钥大约有 400 KB。
这个密钥是什么以及它从哪里来?我怎样才能减少包中这个的大小?
android ×10
android-bundle ×10
android-architecture-navigation ×1
android-ndk ×1
androidx ×1
apk ×1
google-play ×1
kotlin ×1
parcelable ×1
send ×1
xml ×1