我是Android开发的新手。我想在我的项目中使用Fragmenttabhost
。
在我的项目中,我有三个标签。每个标签有三个EditTextview
。
我想访问editText
MainActivity's
事件中的所有三个标签OnOptionsItemSelected
值。
fragmentTab.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.app.FragmentTabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<HorizontalScrollView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:fillViewport="true"
android:scrollbars="none">
<TabWidget
android:id="@android:id/tabs"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom" />
</HorizontalScrollView>
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1" />
</LinearLayout>
</android.support.v4.app.FragmentTabHost>
MainActivity
public class FragmentTabs extends ActionBarActivity{
private FragmentTabHost mTabHost;
FragmentTab1 fragmentTab1;
FragmentTab2 fragmentTab2;
FragmentTab3 fragmentTab3;
EditText tab1_ediTxt1,tab1_ediTxt2,tab1_ediTxt3;
EditText tab2_ediTxt1,tab2_ediTxt2,tab2_ediTxt3;
EditText tab3_ediTxt1,tab3_ediTxt2,tab3_ediTxt3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fragment_tabs);
mTabHost = (FragmentTabHost)findViewById(android.R.id.tabhost);
mTabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent);
mTabHost.addTab(mTabHost.newTabSpec("Tab1").setIndicator("Simple1"),
FragmentTab1.class, null);
mTabHost.addTab(mTabHost.newTabSpec("Tab2").setIndicator("Simple2"),
FragmentTab2.class, null);
mTabHost.addTab(mTabHost.newTabSpec("Tab3").setIndicator("Simple3"),
FragmentTab3.class, null);
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
MenuInflater menuInflater = getMenuInflater();
menuInflater.inflate(R.layout.menu, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
switch (item.getItemId())
{
case R.id.menu_save:
{
fragmentTab1=(FragmentTab1)SupportFragmentManager.FindFragmentByTag("Tab1");
fragmentTab2=(FragmentTab1)SupportFragmentManager.FindFragmentByTag("Tab2");
fragmentTab3=(FragmentTab1)SupportFragmentManager.FindFragmentByTag("Tab3");
getTab1view();
getTab2view();
getTab3view();
}
}
public void getTab1view()
{
tab1_ediTxt1= (EditText)fragmentTab1.View.FindViewById(R.id.tab1_edittext1);
tab1_ediTxt2= (EditText)fragmentTab1.View.FindViewById(R.id.tab1_edittext2);
tab1_ediTxt3= (EditText)fragmentTab1.View.FindViewById(R.id.tab1_edittext3);
}
public void getTab2view()
{
tab2_ediTxt1== (EditText)fragmentTab2.View.FindViewById(R.id.tab2_edittext1);
tab2_ediTxt2== (EditText)fragmentTab2.View.FindViewById(R.id.tab2_edittext2);
tab2_ediTxt3== (EditText)fragmentTab2.View.FindViewById(R.id.tab2_edittext3);
}
public void getTab3view()
{
tab3_ediTxt1= (EditText)fragmentTab3.View.FindViewById(R.id.tab3_edittext1);
tab3_ediTxt2= (EditText)fragmentTab3.View.FindViewById(R.id.tab3_edittext2);
tab3_ediTxt3= (EditText)fragmentTab3.View.FindViewById(R.id.tab3_edittext3);
}
}
FragmentTab1
public class FragmentTab1 extends Fragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_layout, container,false);
Editext editTxt1 = (Editext) v.findViewById(R.id.tab1_edittext1);
Editext editTxt2 = (Editext) v.findViewById(R.id.tab1_edittext2);
Editext editTxt3 = (Editext) v.findViewById(R.id.tab1_edittext3);
return v;
}
}
FragmentTab2 , FragmentTab3 与 FragmentTab1 相同。
我可以访问当前所选标签的editText
值。
(例如)假设当前选择第一个选项卡意味着我可以从选项卡访问所有edittext
值,但剩下的第二个和第三个选项卡editText
将返回null。
我只能使用FindFragmentbyTag
访问visibile标签视图。
但无法访问未选中/不可见的标签视图
任何人都可以帮助我访问所有三个标签editetxt
价值访问权限表MainActivity
onOptionsItemSelected
事件。