Android_我如何将捆绑包发送到其他活动?

问题描述:

我试图从一个活动发送一个捆绑到另一个。当我在接收活动中加载包时,所有信息似乎都是空的。下面是一些代码:Android_我如何将捆绑包发送到其他活动?

BaseActivity.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()); 
    } 

我要发送的mediaExtras捆绑在BaseActivity类到另一个活动时,我点击一些按钮。 您可以在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 mIntent = new Intent(this, ExampleActivitly.class); 
Bundle bundle = new Bundle(); 
bundle.putString("key", value); 
mIntent .putExtras(bundle); 

在ExampleActivitly 只是做

Bundle bundle = getIntent().getExtras(); 
String key = bundle.getString("key") 

希望它会为你工作:)

+0

bundle.putExtras(mBundle); 我觉得这句话是错的。 也许intent.putExtras(mBundle); –

+0

感谢您的评论,但它不工作.... –

+0

谢谢@SoonmyunJang,更新了我的答案。 – Neo