2010-07-28 159 views
1

这是我的问题: 我已经有一个标签应用程序。 在每个选项卡中我有一个列表列表到另一个列表,然后到一个屏幕与图像,可点击的文本等 在一个单词中我有任务标签内。链接标签内的链接

问题 尽管长论坛和教程中寻求我仍然想不通女巫是做到这一点的最好pactice:开关活动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); 

然后我要切换活动 - 选项卡内(Activity0> Activity01)0

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); 

       } 
       }); 

回去后我得到一个错误java.lang.IllegalStateException指定的子项已经有了一个ap的arent。您必须先调用子对象的父对象的removeView()。

我知道它来自我的看法,但我不知道如何解决它 那么这是在一个选项卡中执行多个活动的最佳做法吗?

请帮助需要

回答

0

如果使用ViewSwitcherViewFlipper你可以保持连接到该View和来回切换到你心中的愿望。

+0

我已经完成了它,通过替换视图,例如你喜欢的适配器 – superseed77 2010-07-29 13:00:52

+0

样本的任何机会都取代了吗? – 2011-10-27 14:25:00

0

带有标签栏或公共快捷栏的一种方法是有一个单独的类来处理将startActivity(newIntent)和finish()背靠背调用的OnClickListeners。我不太喜欢默认的TabView,因此我倾向于制作一个图形工具栏并使用这种方法。