【发布时间】:2016-03-14 19:52:28
【问题描述】:
我使用MainActivity 中的Intent 来启动另一个名为MatchesActivity 的Activity 使用startActivityForResult。我在已启动的活动 (MatchesActivity) 中的 finish() 和 onActivityResult 内的 Log 语句上设置断点,因为我在 onActivityResult 内设置了 NPE。
intent.getStringExtra("TXAMATCHES") 包含它应该包含的内容。
但是Intent data 又回来了null。
这可能/可能是因为我在 onClick 侦听器中启动了 Intent?
或者是因为MatchesActivity 调用了另一个扩展AsyncTask 的类中的方法,而数据就是该任务产生的数据? (但正确的数据在txaMatches中找到,就在它返回到MainActivity之前...)
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图标终止。)
【问题讨论】:
-
您是否从
onClickListener()的某个位置加载String? -
"但是 Intent 数据返回 null。" -- 嗯,你没有向
Intent提供Uri。因此,getData()将返回null。我觉得我错过了什么。 -
@CommonsWare--好吧,我肯定错过了一些东西。未知水域。我会检查参数。希望就这么简单。
-
@helldawg13--字符串被加载到一个从
onClickListener所在的位置移除两次的类中,即MainActivity,它以MatchesActivity开头作为ActivityForResult', which calls a method inDatabaseConnector`,即AsyncTask,这是创建字符串的位置。 -
@CommonsWare--我见过的示例有 Intent(为结果而启动)通过
Intent intent = new Intent( )返回值,没有参数。所以我不确定我需要在哪里指定Uri或者它应该是什么......
标签: java android android-fragments android-intent