java - 从 `startActivityForResult` 内以 `onClickListener` 开始的 Android Activity 返回字符串返回 null

标签 java android android-fragments android-intent

我使用 MainActivity 中的 Intent 启动另一个名为 MatchesActivityActivity 使用 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/

相关文章:

android - OpenGL-渲染到纹理-整个渲染场景

java - android sqlite数据库表重建

android - 从 onActivityResult 调用的 onPostExecute 更新 fragment 的 UI

java - 反编译器问题 "Could not find or load main class classes.dex"

java - 将方法传递给变量

java - EDT 更改为 "system"组且 Thread.currentThread().getContextClassLoader() 为 null

android - 保留的 fragment 是否保留其 View ?

java - 禁用传递依赖项不起作用

android - 多人等候室超过 2 名玩家时不显示已连接的玩家

android - fragment 一个接一个