我发送一个隐含的意图从一个活动到另一个活动,我想发送一些String变量。我这样做是一个隐含的意图,因为我希望在多个项目中使用活动B,它是图书馆项目的一部分。
我的意图工作得很好但是在活动B中没有读入额外的数据。
这是我在活动A中创建意图的代码:
Intent intent = new Intent(this, ShareResultsActivity.class);
intent.putExtra(EMAIL_SUBJECT, "Results");//String
intent.putExtra(RESULTS_SAVENAME, saveName);//String
intent.putExtra(RESULTS_BODY, body);//String
intent.putExtra(WITH_SAVE_BUTTON, withSaveButton);//Boolean
startActivity(intent);
在活动B中:
Bundle extras = getIntent().getExtras();
Boolean withSaveButton = true;
if(extras != null){
emailSubject = extras.getString("EMAIL_SUBJECT");
resultsSaveName = extras.getString("RESULTS_SAVENAME");
resultsBody = extras.getString("RESULTS_BODY");
withSaveButton = extras.getBoolean("WITH_SAVE_BUTTON", true);
}
这不起作用,String变量为空。
我还尝试以显式意图接收数据的方式执行此操作:
Intent intent = getIntent();
emailSubject = intent.getStringExtra("EMAIL_SUBJECT");
resultsSaveName = intent.getStringExtra("RESULTS_SAVENAME");
resultsBody = intent.getStringExtra("RESULTS_BODY");
Boolean withSaveButton = intent.getBooleanExtra("WITH_SAVE_BUTTON", true);
但这也不起作用。
我可以让它工作的唯一方法是,如果我在getStringExtra中引用发送Activity,但我不能这样做,因为它应该是一个库类。
任何人都可以对此有所了解吗?或者我是以错误的方式解决这个问题?
答案 0 :(得分:2)
我假设你的代码是这样的:
final static String EMAIL_SUBJECT = "email_subject";
// RESULTS_SAVENAME and others are the same style.
Intent intent = new Intent(this, ShareResultsActivity.class);
intent.putExtra(EMAIL_SUBJECT, "Results");//String
startActivity(intent);
然后在你的另一项活动中:
Intent intent = getIntent();
emailSubject = intent.getStringExtra("email_subject");
// or this
// emailSubject = intent.getStringExtra(EMAIL_SUBJECT);
答案 1 :(得分:0)
请使用密钥,两个活动都应该相同。我清楚地看到两个活动中密钥名称的命名约定有所不同。如果密钥名称相同,则数据不应该通过。