Android 在片段中获得意图
看到这个问题后,我开始思考。我可以通过在Android 在片段中获得意图,android,android-fragments,android-intent,Android,Android Fragments,Android Intent,看到这个问题后,我开始思考。我可以通过在onCreateView中调用此函数来获得片段中的意图: String Item = getActivity().getIntent().getExtras().getString("name"); 问题是getActivity可能返回null,以抵消我可以调用的: if(getActivity() != null) String Item = getActivity().getIntent().getExtras().getString("na
onCreateView
中调用此函数来获得片段中的意图:
String Item = getActivity().getIntent().getExtras().getString("name");
问题是getActivity
可能返回null
,以抵消我可以调用的:
if(getActivity() != null)
String Item = getActivity().getIntent().getExtras().getString("name");
}
这很好,但是
我正在考虑在我的活动中创建一个静态方法,然后通过调用该方法访问片段中的意图,如(在我的活动中): 然后在我的片段中,我可以这样称呼它:
String name = DemoActivity.Name();
我的问题: 我可以这样做吗?它会引起任何问题吗?为什么
当前 它工作得很好。试着这样做:
String name = DemoActivity.Name();
活动类别:
Bundle bundle = new Bundle();
bundle.putString("your_key", "your_value");
your_fragment.setArguments(bundle);
片段类:
String your_variable = getArguments().getString("your_key");
在第一个活动片段中设置:
Bundle bundle = new Bundle();
bundle.putString("your_string_key", "your_value");
startActivity(new Intent(getActivity() your_second_activity.class).putExtra("bundle_key", bundle));
第二个活动获取捆绑包值:
fragment.setArguments(getIntent().getBundleExtra("bundle_key"));
在第二个活动片段中:
getArguments().getString("your_string_key")
它的工作很好,但静态方法总是可以防止一些内存泄漏。意图可能更可取。@如果从
活动
外部创建片段
,则只会返回null
。如果总是在活动
中创建片段
,则getActivity()
不应返回null
。变量名应为静态的,以便可以通过静态方法访问,这里是函数名(),除非名称是静态名称,否则无法返回名称variable@DavidWasser当前,片段
调用保存片段的活动
。换句话说,Activity1
保存一个片段,该片段启动第二个活动Activity2
,而Activity2
保存我想要获得目的的片段。Bundle
是在前一个活动的片段中创建的。Bundle
附加到要创建的片段上,如果(getArguments()!=null&&getArguments.containsKey(“您的密钥”))
验证,您可以验证他的存在。这是最佳实践,也是最常用的实践。关于你的问题,如果你的活动被破坏了会发生什么?也许我们不明白你的目标是什么。您只想将数据从活动传递到片段?是吗?我想将数据从一个活动中的片段传递到另一个活动中的片段。@HB。我已经发布了上述问题的另一个答案。您想将数据从第一个活动片段传递到第二个活动片段,对吗?我的问题
->我可以这样做吗?它会引起任何问题吗?为什么?是的,你可以。。没问题,科特林的方法是错的。不工作——从活动到片段的所有内容都为空。存在“arguments”和requiresArgs()的构造,但没有任何东西按预期工作。回到书本上来!Kotlin compiler的编译器天才们再一次采用了一个简单、实用的概念,使得它不可能正确。