【发布时间】:2016-04-01 23:26:35
【问题描述】:
是否可以引用片段的xml布局中定义的元素(如按钮)并在另一个活动中使用它?
我尝试这样做,但对象引用为空。
fragment_date_picker.xml
<TimePicker
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/timePicker"
android:layout_gravity="center_horizontal|top" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="ok"
android:id="@+id/bt_ok"
android:layout_gravity="center" />
MainActivity.java
btPickTime=(Button)findViewById(R.id.bt_pickTime);
AlarmManager alarmManager=(AlarmManager)getSystemService(ALARM_SERVICE);
final DatePickerFragment dp=new DatePickerFragment();
btOk=(Button)findViewById(R.id.bt_ok);
btOk.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.remove(dp);
ft.commit();
}
});
btPickTime.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.add(R.id.ll_main
,dp);
ft.commit();
}
});
【问题讨论】:
-
你是怎么尝试的?你能放一些代码吗?
-
您为什么要这样做?您可以随时为视图膨胀并为其提供片段的 xml,然后在该视图中找到该对象,例如
view.findViewById(R.id.myButton),但我看不出重点,您为什么不做您需要在片段中做的事情? -
你应该阅读communication between Fragments上的文档
-
我猜你只能从你正在使用的布局中获得一些参考(非空),并在当前活动中添加 setContentView(),UPDATED 我觉得你可以试试inthecheesefactory.com/blog/… 可以吗?
-
在
Fragment中使用getter,并以通常的方式与Fragment通信:getFragmentManager().findFragmentById(R.id.fragment_container).getButtonOrAnyOtherView()