我使用 MainActivity
中的 Intent
启动另一个名为 MatchesActivity
的 Activity
使用 startActivityForResult
。我将断点放在启动 Activity (MatchesActivity
) 内的 finish()
和 onActivityResult
内的 Log
语句上,因为我在 onActivityResult
中得到了 NPE。
intent.getStringExtra("TXAMATCHES")
包含它应该包含的内容。
但是 Intent data
返回 null
。
这可能是因为我在 onClick
监听器中启动了 Intent
吗?
或者因为 MatchesActivity
调用了另一个扩展 AsyncTask
的类中的方法并且数据是该任务产生的? (但是在返回到 MainActivity
之前,在 txaMatches
中找到了正确的数据...)
public class MainActivity extends Activity
{
...
btnSearch.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v)
{
...
Intent matchesIntent;
matchesIntent = new Intent(MainActivity.this, MatchesActivity.class);
startActivityForResult(matchesIntent, 0);
...
}
...
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
Log.w("MainActivity","" + onActivityResult " + data.getStringExtra("TXAMATCHES"));
}
}
...
public class MatchesActivity extends Activity implements DatabaseConnector.DatabaseProcessListener
{
...
@Override protected void onDestroy()
{
super.onDestroy();
finishThisAndReturnString();
}
public void finishThisAndReturnString()
{
Intent intent = new Intent();
intent.putExtra("TXAMATCHES",txaMatches.getText().toString());
setResult(RESULT_OK, intent);
finish();
}
(开始的 Activity
被用户按下 back
图标终止。)
最佳答案
您无法在 onDestroy 方法中完成 Activity 。在这个生命周期阶段, Activity 已经死亡。
finish() 方法的调用将调用 onDestroy,而不是其他。
当你想结束 MatchesActivity 时调用 finish 方法。
关于java - 从 `startActivityForResult` 内以 `onClickListener` 开始的 Android Activity 返回字符串返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35996782/