2016-06-14 70 views
1

我想從一個活動發送一個捆綁到另一個。當我在接收活動中加載包時,所有信息似乎都是空的。下面是一些代碼: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) 

請告訴我該怎麼解決呢

+0

可能重複[Android \ _如何發送捆綁到其他活動?](http://stackoverflow.com/questions/37799762/android-how-can-i-send-a-bundle-to -otherother-activity) – Arjan

+0

這行是否打印在logcat上? 'Log.d(「123qwer」,「onDrawerClosed,mediaExtras - >」+ SAVED_MEDIA_ID +「」+ MEDIA_ID_MUSICS_BY_ALBUM);' –

+0

你是什麼意思'... putExtras(mediaExtras),extras)'? 'mediaExtras'和'extras'都是Bundle對象。使用一個鍵作爲putExtras中的第一個參數來添加Bundle in Intent,然後使用相同的鍵在下一個活動中訪問Bundle –

回答

4

您有以下幾種選擇:

1)從意圖使用軟件包:

Intent mIntent = new Intent(this, Example.class); 
Bundle extras = mIntent.getExtras(); 
extras.putString(key, value); 

2)創建一個新的包

Intent mIntent = new Intent(this, Example.class); 
Bundle mBundle = new Bundle(); 
mBundle.putString(key, value); 
mIntent.putExtras(mBundle); 

3)使用的意圖

Intent mIntent = new Intent(this, Example.class); 
mIntent.putExtra(key, value); 

的putExtra()的快捷方法然後,在推出的活動中,您可以通過以下方式閱讀:

String value = getIntent().getExtras().getString(key) 

注意:Bundle對所有基本類型,Parcelables和Serializables都有「get」和「put」方法。我只是使用Strings進行演示。

0

首先創建數據bundel並將其連接到意圖

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

得到這個包在XXXX活動

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