24

の簡単なアプリケーションを実行しようとしていますAndroid。2つのアクティビティ(AB)があります。でB選択したいだけですdate

私は始めAて、そしてします:

 Intent intent = new Intent();
 intent.setClass(this, B.class);
 startActivityForResult(intent,1);

次に、でB、私はします:

 Intent intent = getIntent();
 setResult(RESULT_OK);
 intent.putExtra("Date",dateSelected);
 finish();

そして、でA、私は次の方法を持っています:

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
     super.onActivityResult(requestCode, resultCode, data);
     if(resultCode==RESULT_OK && requestCode==1){
        Bundle bundle = getIntent().getExtras();
        String aux = bundle.getString("nuevo");
        .....
    }

しかし、、、databundleですnull。コードをデバッグすると、クラスBintentがありますがExtras、呼び出しfinish()てに戻るとclass A、これintentに到達できません。

どうすればこの問題を解決できますか?

4

3 に答える 3

54

これを試して:

次に、Bでは、次のことを行います。

Intent intent = getIntent();
intent.putExtra("Date",dateSelected);
setResult(RESULT_OK, intent);
finish();

そして、Aでは:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if(resultCode == RESULT_OK && requestCode==1) {
        Bundle MBuddle = data.getExtras();
        String MMessage = MBuddle.getString("Date");
    }
}
于 2012-05-10T12:05:02.590 に答える
9

AonActivityResultメソッドで

   if(null!=data){

    Bundle bundle = data.getExtras();
    String mydate = bundle.getString("Date");

   }

とでB

Intent returnIntent = new Intent();
returnIntent.putExtra("Date",dateSelected);
setResult(RESULT_OK,returnIntent);      
finish();
于 2012-05-10T11:49:18.213 に答える
2

私はこれが答えられていることを知っていますが、エラーについてさらに説明するために、コールバックで受け取っgetIntent()た要素の代わりに使用していました。data

getIntent()アクティビティAを開くために最初に使用されたインテント(アプリを開いたとき、または別のアクティビティから)を返します。これは、アクティビティBが応答パラメーターとして返したdataインテントです。

また、アクティビティAに返される新しいインテントを作成する代わりに、アクティビティBgetIntent()で使用していました。

Intent returnIntent = new Intent();

最後に、作成したインテントをに追加する必要がありますsetResult

setResult(RESULT_OK,returnIntent);  
于 2017-01-11T03:41:32.950 に答える