onActivityResult中的数据为null

Nob*_*sco 18 android android-intent

我正在尝试做一个简单的应用程序Android.我有两个活动(AB).在B我只想选择一个date.

我开始A,并做:

 Intent intent = new Intent();
 intent.setClass(this, B.class);
 startActivityForResult(intent,1);
Run Code Online (Sandbox Code Playgroud)

然后,在B,我做:

 Intent intent = getIntent();
 setResult(RESULT_OK);
 intent.putExtra("Date",dateSelected);
 finish();
Run Code Online (Sandbox Code Playgroud)

而且,在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");
        .....
    }
Run Code Online (Sandbox Code Playgroud)

但是data,和bundle,是null.当我调试代码时,我看到在课堂上B,intentExtras,但是,当我调用finish()并返回时class A,这intent是不可达的.

我怎么解决这个问题?

ρяσ*_*я K 48

试试这个:

然后,在B中,我做:

Intent intent = getIntent();
intent.putExtra("Date",dateSelected);
setResult(RESULT_OK, intent);
finish();
Run Code Online (Sandbox Code Playgroud)

并且,在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");
}
}
Run Code Online (Sandbox Code Playgroud)

  • 谢谢!!!我需要更改 setResult(RESULT_OK, intent)。这很容易,但我是 android 编程的新手。 (2认同)

Sam*_*iya 9

AonActivityResult方法中

   if(null!=data){

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

   }
Run Code Online (Sandbox Code Playgroud)

并在 B

Intent returnIntent = new Intent();
returnIntent.putExtra("Date",dateSelected);
setResult(RESULT_OK,returnIntent);      
finish();
Run Code Online (Sandbox Code Playgroud)