将数据从Fragment传递到FragmentActivity不起作用



我不知道为什么我设置的代码不能正常工作。

我正在尝试启动一个活动,并在调用打开该活动的意图时传递一些数据。

出于某种原因,这没有按计划进行,当我单击列表项打开活动时,只会出现一个空白的黑屏,这不应该发生,我的数据传递也没有正确传递。

这是我的代码,希望有人能指引我正确的方向。

呼叫代码:

    @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...  

希望得到帮助。

相关内容

  • 没有找到相关文章