2016-04-26 6 views
0

私はクラスをいくつか持っています。Android、インテント:1つのバンドルをSecondActivityに渡しました

public class MainActivity extends Activity { 

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

    Intent newintent = new Intent(getApplicationContext(),Main2Activity.class); 
    newintent.putExtra("SOME_Data", "Perfect_Data"); 
    startActivity(newintent); 
    finish(); 
} 
} 

別のクラスのデータを取得したいと考えています。

public class Main2Activity extends Activity { 

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

    Intent i = this.getIntent(); 
    Bundle s = getIntent().getExtras(); 

} 
} 

しかし、私はこのコードを起動すると、代わりに文字列 "Perfect_Data" をバンドル - 私はこれを取得:バンドル[mParcelledData.dataSize = 68]を。何が起こっている?手伝って頂けますか?

答えて

0

を使用すると、バンドルの内容を印刷したい場合は、これを使用する:

は、そうでない場合
for (String key : bundle.keySet()) { 
    Object value = bundle.get(key); 
    Log.d(TAG, String.format("%s %s (%s)", key, 
     value.toString(), value.getClass().getName())); 
} 

それだけで使用していますObjectクラスのデフォルトのtoString()を取得します。

0

バンドルは、デフォルトのtoString関数を使用して印刷されます。あなただけの文字列を取得したい場合は

、このように変更します。

Intent i = this.getIntent(); 
String data = i.getStringExtra("SOME_Data"); 
関連する問題