这是我的问题: 我有一个带标签的应用程序。 在每个标签中,我有一个列表,列表到另一个列表,然后到一个带有图像,可点击文本等的屏幕。 总之,我在标签中有任务。
问题 尽管长期寻求论坛和教程,我仍然无法想象女巫是最好的做法:切换活动insde一个选项卡 或改变观点。
这是我的代码
public class App extends TabActivity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Resources res = getResources(); // Resource object to get Drawables
TabHost tabHost = getTabHost(); // The activity TabHost
TabHost.TabSpec spec; // Reusable TabSpec for each tab
Intent intent; // Reusable Intent for each tab
// Create an Intent to launch an Activity for the tab (to be reused)
intent = new Intent().setClass(this, Activity0.class);
// Initialize a TabSpec for each tab and add it to the TabHost
spec = tabHost.newTabSpec("0").setIndicator("0",
res.getDrawable(R.drawable.ic_tab_0))
.setContent(intent);
tabHost.addTab(spec);
intent = new Intent().setClass(this, Activity1.class);
spec = tabHost.newTabSpec("1").setIndicator("1",
res.getDrawable(R.drawable.ic_tab_1))
.setContent(intent);
tabHost.addTab(spec);
然后我必须在标签0
中切换活动(Activity0 - > Activity01)public class Activity0 extends Activity{
..
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mainlist);
ListView l1 = (ListView) findViewById(R.id.ListView01);
l1.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
// Toast.makeText(getBaseContext(), "You clciked "+parentTypes.get(arg2).getLibelle(), Toast.LENGTH_LONG).show();
/*TODO database method */
TypeEvenement parent = parentTypes.get(arg2);
if (parent.getChildren().size()!=0)
{
Intent i = new Intent(TypeParentList.this, TypeChildList.class);
int id= new Long(parentTypes.get(arg2).getId()).intValue();
i.putExtra("typeid", id);
View view = lam.startActivity("TypeChildList",i.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP)).getDecorView();
setContentView(view);
然后从Activity01返回此活动
public class Activity01 extends Activity{
tv.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Intent i = new Intent(TypeChildList.this, Activity0.class);
LocalActivityManager lam = pa.getLocalActivityManager();
View view2 = lam.startActivity("Activity0",i).getDecorView();
setContentView(view2);
}
});
go and back后我得到一个错误java.lang.IllegalStateException指定的子节点已经有父节点。您必须首先在孩子的父母身上调用removeView()。
我知道它来自我的观点,但我无法弄清楚如何解决它 那么这是在一个标签中进行多项活动的最佳做法吗?
请帮助
答案 0 :(得分:0)
如果您使用ViewSwitcher
或ViewFlipper
,则可以View
附加{{1}},并根据您的心愿来回切换。
答案 1 :(得分:0)
使用标签栏或常用快捷方式栏的一种方法是使用单独的类来处理OnClickListeners,它们可以背对背地调用startActivity(newIntent)和finish()。我不太喜欢默认的TabView看起来像什么,所以我倾向于制作一个图形工具栏并使用这种方法。