从捆绑包中的浮动上下文菜单中选择的保存选项

Save option selected from a floating context menu in a bundle

我正在编写一个应用程序,目前正在考虑使用捆绑包来保存浮动上下文菜单的选定选项,以便它可以出现在下一个 activity.It 应该是这样的:

1.- 单击一个按钮,然后会出现浮动上下文菜单。

2.- Select 一个选项。

3.- 开始第二个 activity.

4.- 所选选项的名称应出现在新 activity 中的文本框/EditText 中。

到第三步还算简单,就是不知道第四步怎么做。谁能告诉我应该如何进行?

根据您选择的选项,您将创建一个 Intent,对吗?因此,将字符串与意图一起传递,然后您可以在下一个 activity.

中提取它

将字符串添加到您的意图中:

intent.putExtras("key", "string");

然后得到下一个字符串activity:

String string = getIntent().getStringExtra("key");

如果您的 activity 托管一个片段,您可以使用 setArguments(Bundle) 将信息传递给片段,这将允许您捆绑信息并在创建视图时检索它。这种实现的优点意味着您发送数据的 activity 可以用于多种用途(使用 Intent 表示 activity 具有唯一目的,不能易于重复使用)

// private method called during option select...
private void onOptionClickDoSomething() {
    Fragment myFragment = new Fragment();
    Bundle args = new Bundle();
    args.putCharSequence("key", someStringValue);

    myFragment.setArguments(args); // attach args to the Fragment

    // invoke a transaction
    FragmentManager fm = getSupportFragmentManager();  // assume using support library
    FragmentTransaction ft = fm.beginTransaction();
    ft.add(R.id.myFragmentContainer, myFragment);
    ft.commit();
}

然后在MyFragment:

public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) {
    View v = inflater.inflate(...);

    Bundle args = getArguments();
    // use these args to get your text value

    String myText = args.getCharSequence("key", "default");

    // ... more stuff

    return v;
}

当然,您始终可以使用 Intent 将信息直接传递给 activity:

// private method called during option select...
private void onOptionClickDoSomething() {
    Intent intent = new Intent(this, MyActivity.class);
    intent.putExtra("key", someStringValue);
    startActivity(intent);
}

MyActivity 中,您可以获取 Intent 并查看那里的信息:

public void onCreate(Bundle savedInstanceState) {
    Intent i = getIntent();

    String myText = i.getExtra("key");

    // do stuff...
}