2012-04-08 3 views
2

Ich entwickle eine neue Anwendung, wo ich die tab-Ansicht als übergeordnetes Layout verwende. Ich verwende TabHost, um drei Registerkarten in meiner Anwendung anzuzeigen. Jede dieser Registerkarten verfügt über separate Aktivitäten, die eine ListView enthalten. Das funktioniert gut. Wenn Sie auf ein Element in der ListView klicken, wird gerade ein brandneuer Activity-Vollbildschirm angezeigt, der den TabHost verlässt. Ich möchte diese Aktivitäten im TabHost laden. Ich möchte die Tab-Ansicht behalten, nachdem ich eine andere Aktivität aus der Listenansicht aufgerufen habe.Wie starte ich eine neue Aktivität aus der Listenaktivität innerhalb der tabview

Vielen Dank für Ihre Antwort. Hier ist mein Code wo ich deine Hilfe brauche.

################ HelloTabWidget

// Diese Klasse zeigt die Registerkarte Ansicht mit 3 Tab - Kunden, Unternehmen und Stadt.

public class HelloTabWidget extends TabActivity { 
    //public class HelloTabWidget extends ActivityGroup { 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.main); 

      Resources res = getResources(); 


     TabHost tabHost = getTabHost(); 
     TabHost.TabSpec spec; 
     Intent intent; 
     intent = new Intent().setClass(this, CustomerTabView.class); 
     spec = tabHost 
       .newTabSpec("Customer") 
       .setIndicator("Customer", 
         res.getDrawable(R.drawable.ic_tab_Customer)) 
       .setContent(intent); 
     tabHost.addTab(spec); 

     intent = new Intent().setClass(this, CompanyTabView.class); 
     spec = tabHost 
       .newTabSpec("Company") 
       .setIndicator("Company", 
         res.getDrawable(R.drawable.ic_tab_Company)) 
       .setContent(intent); 
     tabHost.addTab(spec); 

     intent = new Intent().setClass(this, CityTabView.class); 
     spec = tabHost 
       .newTabSpec("City") 
       .setIndicator("City", res.getDrawable(R.drawable.ic_tab_City)) 
       .setContent(intent); 
     tabHost.addTab(spec); 

     tabHost.setCurrentTab(0); 
    } 
} 
################ CustomerTabView

// Diese Klasse zeigt Listenansicht der Kunden-Namen. Wenn Sie auf einen beliebigen Eintrag in der Liste klicken, wird die Kundendetailseite mit derselben Tabulatoransicht geöffnet.

public class CustomerTabView extends ListActivity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     String[] category = getResources().getStringArray(
       R.array.category_array); 
     setListAdapter(new ArrayAdapter<String>(this, R.drawable.list_items, 
       category)); 
     ListView lv = getListView(); 
     lv.setTextFilterEnabled(true); 

     lv.setOnItemClickListener(new OnItemClickListener() { 
      public void onItemClick(AdapterView<?> parent, View view, 
        int position, long id) { 

       //Need this logic where I can retain the tab view and call new activity class for customerdetails view.     

       Intent intent; 
       intent = new Intent(CustomerTabView.this, 
         C_DetailActivity.class); 
       startActivity(intent); 
       finish(); 
      } 

     }); 
    } 
} 
################ C_DetailActivity

Bei Klick auf ein beliebiges Element aus customertabview, bekommt diese Aktivität Klasse aufrufen, die Details des Kunden zeigt.

Nach Aufruf der C_DetailActivity-Klasse verschwindet die Registerkartenansicht Ich möchte die Hauptansicht der Registerkarte beibehalten. Also diese Logik müssen, wo ich die Tab-Ansicht behalten und neue Aktivitätsklasse nennen für Kundendetails

+0

Halten Sie es einfach. Ich würde das nicht tun. – Blundell

+0

Bitte senden Sie Ihren Code? Dies sollte eine einfache Implementierung sein. –

+0

Was brauchen Sie noch? Du hast die Absicht? –

Antwort

1
ListView lv = (ListView) findViewById(R.id.myListView); 
lv.setOnItemClickListener(new OnItemClickListener() { 
    public void onItemClick(AdapterView parent, View v, int position, long id) { 
     LocalActivityManager manager = getLocalActivityManager(); 
     String currentTag = tabHost.getCurrentTabTag(); 
     manager.destroyActivity(currentTag, true); 
     manager.startActivity(currentTag, new Intent(this, newClass.class)); 
    } 
}); 

Nicht getestet zu sehen, aber so etwas wie dies funktionieren sollte. Wenn nicht, werde ich Ihnen helfen, es zu beheben.

+0

Danke, ich habe meinen Code über – user1320395

+0

hinzugefügt Und funktioniert es, wenn Sie den OnItemClickListener durch meinen ersetzen? –

+0

getLocalActivityManager funktioniert nicht mit ListActivity. Irgendeine Idee, wie man Registerkartenansicht in der Detailseite behält – user1320395

Verwandte Themen