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的编译器天才们再一次采用了一个简单、实用的概念,使得它不可能正确。