java - Android 如何将 Bundle 发送到另一个 Activity?

标签 java android android-activity bundle

<分区>

我正在尝试将一个包从一个 Activity 发送到另一个 Activity 。当我在接收 Activity 中加载包时,所有信息似乎都是空的。这是一些代码:

基础 Activity .java

private final DrawerLayout.DrawerListener mDrawerListener = new DrawerLayout.DrawerListener() {
            @Override
            public void onDrawerSlide(View drawerView, float slideOffset) {
                if (mDrawerToggle != null) mDrawerToggle.onDrawerSlide(drawerView, slideOffset);
            }

            @Override
            public void onDrawerOpened(View drawerView) {
                if (mDrawerToggle != null) {
                    mDrawerToggle.onDrawerOpened(drawerView);
                }
                if (getSupportActionBar() != null) getSupportActionBar().setTitle(R.string.app_name);
            }

            @Override
            public void onDrawerClosed(View drawerView) {       // 사이드 바에서 선택한 리스트 동작
                if (mDrawerToggle != null) mDrawerToggle.onDrawerClosed(drawerView);
                if (mItemToOpenWhenDrawerCloses >= 0) {
                    Bundle extras = ActivityOptions.makeCustomAnimation(
                            BaseActivity.this, R.anim.fade_in, R.anim.fade_out).toBundle();
                    Bundle mediaExtras = new Bundle();

                    Class activityClass = null;
                    switch (mItemToOpenWhenDrawerCloses) {
                        case R.id.navigation_allmusic:
                            activityClass = MusicPlayerActivity.class;
                            break;
                        case R.id.navigation_album:
                            mediaExtras.putString(SAVED_MEDIA_ID, MEDIA_ID_MUSICS_BY_ALBUM);
                            Log.d("123qwer", "onDrawerClosed, mediaExtras -> " + SAVED_MEDIA_ID + " " + MEDIA_ID_MUSICS_BY_ALBUM);
                            activityClass = MusicPlayerActivity.class;
                            break;
                        case R.id.navigation_playlists:
                            //TODO:add class later
    //                        activityClass = PlaceholderActivity.class;
                            break;
                    }
                    if (activityClass != null) {
                        setBundleInfo(mediaExtras);
                        startActivity(new Intent(BaseActivity.this, activityClass).putExtras(mediaExtras), extras);
                        finish();
                    }
                }
            }

            @Override
            public void onDrawerStateChanged(int newState) {
                if (mDrawerToggle != null) mDrawerToggle.onDrawerStateChanged(newState);
            }
        };

MusicPlayerActivity.java

 @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initializedToolbar();


        Log.d("123qwer", "Get Bundle Test " + this.getIntent().getExtras().getString(SAVED_MEDIA_ID));
        initializeFromParams(savedInstanceState, getIntent());
    }

当我单击某个按钮时,我想将 BaseActivity 类中的 mediaExtras Bundle 发送到另一个 Activity 。你可以在 BaseActivity 中看到这部分内容。

case R.id.navigation_album:
    mediaExtras.putString(SAVED_MEDIA_ID, MEDIA_ID_MUSICS_BY_ALBUM);
    Log.d("123qwer", "onDrawerClosed, mediaExtras -> " + SAVED_MEDIA_ID + " " + MEDIA_ID_MUSICS_BY_ALBUM);
    activityClass = MusicPlayerActivity.class;
    break;

我尝试将字符串信息放入 mediaExtras。但是,当我尝试获取它时,我只得到了一个空值。

this.getIntent().getExtras().getString(SAVED_MEDIA_ID)

请教我怎么解决

最佳答案

首先创建数据束并将其附加到 Intent

Intent mainIntent = new Intent(getApplicationContext(),XXXX.class);
Bundle dataBundle = new Bundle();
dataBundle.putString("keyid","thevalue");
mainIntent.putExtras(dataBundle);
startActivity(mainIntent);

在 XXXX Activity 中获取这个包

//getting the datbundel from other activity incoming
Bundle extras = getIntent().getExtras();
String a=extras.getString("keyid");

关于java - Android 如何将 Bundle 发送到另一个 Activity?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37804066/

相关文章:

java - 检查数组的长度并检查 HashMap 键是否在 HashMap 中(Java、Arrays、HashMap)

java - Android的AsyncTask : multiple params,返回值,等待

android - 为移动设备创建链接的正确方法是什么?

android - 迭代 RecyclerView 中的所有项目

java - 将多 Json 解析为 Java/Android 时出现问题

java - 在LibGDX And​​roid部署中执行transformClassesWithDexForDebug失败

java - Android 不会破坏后退按钮上的数据

android - 从 startActivityforResult 获取 resultcode -1,-1 是什么意思

android - getActivity 在 Fragment 中返回 null

java - 在 Java 8u60 的 WebView 中加载本地 JavaScript 文件