【发布时间】:2018-07-25 07:57:29
【问题描述】:
看到this 的问题后,我开始思考。我可以通过在 onCreateView 内部调用它来获得 Fragment 中的 Intent:
String Item = getActivity().getIntent().getExtras().getString("name");
问题在于getActivity 可能会返回null,以反驳我可以调用的:
if(getActivity() != null)
String Item = getActivity().getIntent().getExtras().getString("name");
}
这会很好,但是..
我正在考虑在我的 Activity 中创建一个静态方法,然后通过调用该方法访问我的片段中的 Intent,如下所示(在我的 Activity 中):
public class DemoActivity extends Activity{
static String name;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_demo);
//Getting the Intent from the previous Activity
name = getIntent().getStringExtra("name");
}
public static String Name(){
//returning the Intent
return name;
}
}
然后在我的 Fragment 中我可以这样称呼它:
String name = DemoActivity.Name();
我的问题:
我可以这样做吗?它会导致任何问题吗?为什么?
目前
一切正常。
【问题讨论】:
-
它工作正常,但静态方法总是可以防止一些内存泄漏。 Intent 可能更可取。
-
@Thunder 我没有存储
String,我将它传递给Fragment- stackoverflow.com/a/43480386/5550161 -
getActivity()只会在您从Activity外部创建Fragment时返回null。如果您总是在Activity中创建Fragment,那么getActivity()永远不应返回null。 -
变量名应该是静态的,这样才能被静态方法访问,这里的函数Name(),不能返回name,除非name是静态变量
-
@DavidWasser 目前
Fragment调用拥有Fragment的Activity。换句话说,Activity1持有一个片段,该片段启动第二个活动Activity2和Activity2持有我想要获取意图的片段。
标签: android android-fragments android-intent