我不知道为什么我设置的代码不能正常工作。
我正在尝试启动一个活动,并在调用打开该活动的意图时传递一些数据。
出于某种原因,这没有按计划进行,当我单击列表项打开活动时,只会出现一个空白的黑屏,这不应该发生,我的数据传递也没有正确传递。
这是我的代码,希望有人能指引我正确的方向。
呼叫代码:
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
if (position == 0) {
String msg = "First";
Intent i = new Intent(getActivity(), ImageGridActivity.class);
i.putExtra("1", msg);
startActivity(i);
}
if (position == 1) {
String msg = "Second";
Intent i = new Intent(getActivity(), ImageGridActivity.class);
i.putExtra("2", msg);
startActivity(i);
}
}
处理类别:
public class ImageGridActivity extends FragmentActivity {
private static final String Abstract = "Abstract";
private static final String Animal = "Animal";
@Override
protected void onCreate(Bundle savedInstanceState) {
if (BuildConfig.DEBUG) {
Utils.enableStrictMode();
}
super.onCreate(savedInstanceState);
Bundle extras = getIntent().getExtras();
String msg = extras.getString("KeyMessage");
if (msg == "1") {
if (getSupportFragmentManager().findFragmentByTag(Abstract) == null) {
final FragmentTransaction ft = getSupportFragmentManager()
.beginTransaction();
ft.add(android.R.id.content, new AbstractGridFragment(),
Abstract);
ft.commit();
}
if (msg == "2") {
}
if (getSupportFragmentManager().findFragmentByTag(Animal) == null) {
final FragmentTransaction ft = getSupportFragmentManager()
.beginTransaction();
ft.add(android.R.id.content, new AnimalGridFragment(), Animal);
ft.commit();
}
}
}
}
密钥与不匹配
String msg = extras.getString("KeyMessage");
当你的钥匙是"1"one_answers"2"时
检查文档
http://developer.android.com/reference/android/content/Intent.html
public Intent putExtra (String name, String value)
将扩展数据添加到意图中。名称必须包括一个包前缀,例如应用程序com.android.contacts将使用类似"com.android.cantacts.ShowAll"的名称。
参数
name The name of the extra data, with package prefix.
value The String data value.
返回
Returns the same Intent object, for chaining multiple calls into a single statement.
你可能想要
Intent i = new Intent(getActivity(), ImageGridActivity.class);
i.putExtra("key", "1"); // "key" is the key and "1" is the value
startActivity(i);
和
Intent i = new Intent(getActivity(), ImageGridActivity.class);
i.putExtra("key", "2");
startActivity(i);
然后
String msg = extras.getString("key");
同时使用.equals
或.equalsIgnoreCase
比较字符串
if (msg.equals("1")) {
您的密钥发送/接收错误。你应该这样试试:
实例化字符串msg
String msg;
如果
msg = "1";
i.putExtra("myKey", msg);
其他
msg = "2";
i.putExtra("myKey", msg);
因此:
String msg = extras.getString("myKey");
if("1".equals(msg)) // so...
else if("2".equals(msg)) // so...
希望得到帮助。