2011-10-19 15 views
2

バンドルをあるアクティビティから別のアクティビティに送信しようとしています。受信アクティビティでバンドルをロードすると、すべての情報がnullと思われます。バンドルを別のアクティビティに送信

アクティビティA(バンドルを送信):

public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) { 
       Intent intent = new Intent(HotelsActivity.this, EditHotelActivity.class); 
       Bundle b = new Bundle(); 
       b = toBundle(app.getHotelList().get(position)); 
       intent.putExtra("Hotel Bundle", b); 
       startActivity(intent); 
      } 

      }); 

toBundle方法はちょうど束にオブジェクトから文字列を追加して、ここでいくつかのコードです。私はこのメソッドにロギングステートメントを入れて、バンドルは絶対にnullではありません。

活動B(バンドルをロードする):

public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView (R.layout.edit_hotel); 
     setTitleFromActivityLabel (R.id.title_text); 

     // Retrieve sent bundle 
     Bundle b = this.getIntent().getExtras(); 
     String hotelName = b.getString("hotelname"); 
     if (hotelName == null) 
      MyLog.i(TAG, "IT IS NULL"); 
    } 

loggin文は、その後、何らかの理由でhotelNameがヌルであるが、それは間違いなく正しいキーであるため、 "ITはNULL IS" 出力します。

誰でも助けてもらえますか?

toBundle方法:

String hotelName = b.getString("hotelname"); 

更新:

public Bundle toBundle(HotelItem hotel) { 
     Bundle b = new Bundle(); 
     b.putString("hotelname",hotel.getHotelName()); 
     b.putString("hotel address", hotel.getHotelAddress()); 
     b.putString("hotel telephone", hotel.getHotelTelephone()); 
     b.putString("hotel website", hotel.getHotelWebsite()); 


     return b; 
    } 

答えて

1

あなたが送信され、正確なキーを使用する必要があります!

+0

こんにちは、私はそれを試みましたが、まだnullです。私は思ったb.getString( "hotelname");バンドルからキーホテル名を得ましたか?元の投稿にtoBundleメソッドを追加しました。 – sam

+0

OK、今度は、すべての文字列 'hotelname'を大文字ではなく、空白なしで、' Hotel Name' –

0

Intent.putExtra(Bundle)メソッドを使用してください。代わりにあなたのtoBundle方法を使用しての

intent.putExtra(b); 
0

、あなたはIntentに、あなたのオブジェクトを書くParcelableimplementなければならない、と。

2
Bundle b = new Bundle(); 
b = toBundle(app.getHotelList().get(position)); 
intent.putExtras(b); 
startActivity(intent); 




//In your next activity 

Bundle bundle = getIntent().getExtras(); 
if(bundle!=null){ 
String hotelName = b.getString("hotelname"); 
} 
0

活動A(バンドルを送信する): intent.putExtra("Hotel Bundle", b);

活動B(バンドルをロードする): getintent().getExtra("Hotel Bundle");

ないgetintent().getExtra*s*

0

誰もが、まだこれを必要とする場合、私は知りませんしかし、あなたの中でintent.putExtra("Hotel Bundle", b);

それはどちらかだあなただけintent.putExtra(b);を送るので、あなたは

Bundle b = this.getIntent().getExtras(); 
String hotelName = b.getString("hotelname"); 

を介してデータを取得することができますかあなたは申し訳ありませんHotel Bundleキー

Bundle b = this.getIntent().getBundleExtra("Hotel Bundle"); 
String hotelName = b.getString("hotelname"); 

を維持したいならば、私はここで答えを必要とするので、同様にそれらを助けるかもしれません誰がこれにぶつかるのか。乾杯。

関連する問題