我在我的应用程序中使用了tabHost,但在其中一个视图中(对应于其中一个选项卡)我有一个按钮,必须带我到另一个活动,然后再使用另一个布局。问题是:我如何获得这个新的布局可以继续访问标签?或者更好的说,我如何在FrameLayout中加载这个新的布局?TabHost中的新布局
在这里,我已经上传我想要做的事:提前http://imageshack.us/photo/my-images/541/exampleu.png/
谢谢!
Pd:我是Android新手,也许有更好的方法来实现我的purpouse而不使用TabActivity。我愿意接受任何建议。
编辑:所以我决定按照我的建议使用片段。现在,我有以下几点:
- AplicationActivity延伸FragmentActivity
- ClientActivity延伸片段
- SettingsActivity延伸片段
- DataClientActivity延伸片段
及以下布局:
- activity_aplicacion
- activity_client
- activity_settings
- activity_data_client
的activity_aplicacion.xml有TabHost,FrameLayout里和TabWidget并从这些我可以去ClientActivity和使用SettingsActivity标签。
在ClientActivity中,我有一个名为“new”的按钮,当我按下此按钮时,我想要访问 DataClientActivity。所以,在ClientActivity我已经TE以下:
public void onClickNew(View view){
DataClientActivity fragmentDataClient = new DataClientActivity();
final FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(android.R.id.tabcontent,fragmentDataClient , "fragmentDataClient ");
ft.addToBackStack(null);
ft.commit();
}
但是当我运行我的应用程序,我得到了folling错误:
05-04 21:55:04.780:E/AndroidRuntime(7515):JAVA .lang.IllegalStateException:找不到方法onClickNew(视图)在活动课com.nrAplicationActivity为的onClick处理程序上的视图类android.widget.Button ID为“buttonNew”
所以我有点搞不清分辩现在。为什么我应该在AplicationActivity中使用onClickNew方法,而不是在ClientActivity中使用按钮?
EDITED 2:我发现这种情况的解决方案:
公共类ClientActivity扩展片段{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
View view = inflater.inflate(R.layout.activity_clientes, container, false);
**// Register for the Button.OnClick event
Button b = (Button)view.findViewById(R.id.buttonNew);
b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Toast.makeText(Tab1Fragment.this.getActivity(), "OnClickMe button clicked", Toast.LENGTH_LONG).show();
Log.e("onClickNuevo2 ", "inicio");
DataClientActivity fragmentDataClient= new DataClientActivity();
final FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(android.R.id.tabcontent,fragmentDataClient, "fragmentDataClient");
ft.addToBackStack(null);
ft.commit();
}
});**
return view;
}
}
我只需要到的onClick监听器注册到我的按钮,我ClientActivity内。现在每一个完美的作品!非常感谢Divya Motiwala :)并感谢以下链接:http://thepseudocoder.wordpress.com/2011/10/04/android-tabs-the-fragment-way/#comment-410
问题是我正在使用API级别8,只要我知道Fragmens是在API级别11中引入的。所以我想我会遇到这个问题? – kiduxa 2013-05-04 23:24:32
我接受你的建议,因为我发现有一个Android库支持,所以我改变我的TabActivity到FragmentActivity和活动碎片。我编辑了我的问题,请阅读。 – kiduxa 2013-05-05 02:13:12