从捆绑包中的浮动上下文菜单中选择的保存选项
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...
}
我正在编写一个应用程序,目前正在考虑使用捆绑包来保存浮动上下文菜单的选定选项,以便它可以出现在下一个 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...
}