我在我的应用程序中使用 tabHost,但在其中一个视图(对应于其中一个选项卡)中,我有一个按钮,必须将我带到另一个活动,然后是另一个布局。问题是:我怎样才能让这个新布局可以继续访问选项卡?或者更好地说,如何在 FrameLayout 中加载这个新布局?
在这里,我上传了我正在尝试做的事情:http: //imageshack.us/photo/my-images/541/exampleu.png/
提前致谢。!
Pd:我是 Android 新手,也许有更好的方法可以在不使用 TabActivity 的情况下实现我的目的。我愿意接受任何建议。
编辑:所以我决定按照我的建议使用 Fragments。现在我有以下内容:
- ApplicationActivity 扩展了 FragmentActivity
- ClientActivity 扩展了 Fragment
- SettingsActivity 扩展了 Fragment
- DataClientActivity 扩展了 Fragment
和以下布局:
- 活动应用程序
- 活动客户端
- 活动设置
- 活动数据客户端
activity_aplicacion.xml 有 TabHost、FrameLayout 和 TabWidget,我可以使用标签转到 ClientActivity 和 SettingsActivity。
在 ClientActivity 中,我有一个名为“new”的按钮,当我按下此按钮时,我想转到 DataClientActivity。因此,在 ClientActivity 我有以下内容:
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();
}
但是当我运行我的应用程序时,我得到了以下错误:
05-04 21:55:04.780: E/AndroidRuntime(7515): java.lang.IllegalStateException: 在视图类 android.widget.Button 的 onClick 处理程序的活动类 com.nrAplicationActivity 中找不到方法 onClickNew(View) id 'buttonNew'
所以我现在有点困惑。为什么我应该在 AplicationActivity 中使用 onClickNew 方法,而不是在拥有按钮的 ClientActivity 中?
编辑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