标签: android-bundle

如何在android导航组件中传递参数名称?

我正在使用导航图在片段之间导航。一切正常,但我想知道如何以优雅的方式传递参数名称。

这是我的代码片段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}]

两个问题:

  1. 在 navSheet.xml 中使用 a 有什么问题@string/fragment_b_arg_key_name,因此它不返回内容,@string/fragment_b_arg_key_name而是返回原始引用。

  2. 如何不对我在片段navSheet.xml和其他类中使用的参数名称进行硬编码?如何将这些密钥存储在一个地方?

xml android android-resources android-bundle android-architecture-navigation

8
推荐指数
1
解决办法
8489
查看次数

从BroadcastReceiver类发送Intent到当前正在运行的活动

我有一个课程延伸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).但是,当我这样做时,我得到一个异常无法暂停活动.

android android-intent android-activity android-bundle

7
推荐指数
1
解决办法
1万
查看次数

使用FragmentTransaction将数据发送到片段

我在我的片段类中调用它:

@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

7
推荐指数
1
解决办法
1万
查看次数

如何在Activity中接收Intent

老实说,在询问之前我对此进行了一些搜索。如何从活动接收意图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)

android parcelable android-intent android-bundle

6
推荐指数
1
解决办法
1万
查看次数

Build Bundle后,release文件夹中没有aab文件

发布中的唯一文件是构建 apk。尽管在生成签名包时已选择发布,但 aab 文件仅位于调试文件夹中。

android android-bundle

6
推荐指数
1
解决办法
7258
查看次数

如何使用bundletool从AAB生成APK(不是APKS)?

我正在寻找一种从 Android App Bundle 生成 APK 的解决方案,这将帮助我共享该应用程序进行内部测试,而不是在 Google Play Beta 测试上发布。

有没有使用bundletool的方法或命令?

android android-build apk android-bundle android-app-bundle

6
推荐指数
1
解决办法
7171
查看次数

viewpager savedinstancestate 中的片段始终为空

我知道以前有人问过这个问题,但到目前为止给出的答案都没有对我有任何帮助。

我有一个 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)

android android-fragments android-viewpager android-bundle

5
推荐指数
1
解决办法
5465
查看次数

android 发布应用程序包构建缺少本机 lib .so 文件

案件

我有一个应用程序

当我在调试模式下使用它时,一切正常!

但是当我尝试构建用于发布的 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

5
推荐指数
2
解决办法
3380
查看次数

Google Play - 内部测试 - 无效

一位开发者错误地在发布前将该应用程序发布到了Google Play 上。然后出于安全原因,它没有被发布。

然后创建内部测试版本,选择国家/地区,添加测试人员...(使用 .oob 捆绑包)。

每个人都收到了邀请,我们向测试人员分享了应用程序链接,但应用程序没有显示。然后我们注意到,跟踪摘要 -内部测试的非活动状态。

什么可能使内部测试状态处于活动状态?(不能选择重新发布应用程序,因为我们不希望每个人都可以使用该应用程序

android google-play android-bundle google-play-console

5
推荐指数
1
解决办法
1166
查看次数

此捆绑包中的“androidx.lifecycle.BundlableSavedStateRegistry.key”是什么?

我正在toolargetool调查应用程序崩溃的原因TransactionTooLargeException

androidx.lifecycle.BundlableSavedStateRegistry.key当我将应用程序置于后台时,我看到这个密钥大约有 400 KB。

这个密钥是什么以及它从哪里来?我怎样才能减少包中这个的大小?

android kotlin android-bundle onsaveinstancestate androidx

5
推荐指数
1
解决办法
2145
查看次数