2012-04-08 2 views
2

Я разрабатываю новое приложение, в котором я использую представление вкладки в качестве родительского макета. Я использую TabHost для отображения 3 вкладок в моем приложении. Каждая из этих вкладок имеет отдельную активность, содержащую ListView. Это работает нормально. Когда вы нажимаете на элемент в ListView, он в настоящее время загружает совершенно новый полнофункциональный экран Activity, оставив TabHost. Я хотел бы загрузить эти действия в TabHost. Я хочу сохранить tabview после вызова других действий из списка.Как начать новую активность из активности списка в пределах табуляции

Благодарим вас обоих за ваш ответ. Вот мой код, где мне нужна ваша помощь.

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

// Этот класс отображает вкладку с вкладкой 3 - клиентом, компанией и городом.

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

// Этот вид отображает список классов имен клиентов. При щелчке по любому элементу в списке он должен открыть страницу с подробными сведениями о табло.

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

При клике любого элемента из customertabview, этот класс активности получает вызов, на который показывает детали заказчика.

public class C_DetailActivity extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     TextView textview = new TextView(this); 
     textview.setText("This is the Customer Details view"); 
     setContentView(textview); 
    } 
} 

После вызова класса C_DetailActivity исчезает вид табуляции. Я хочу сохранить представление главной вкладки. Так нужна эта логика, где я могу сохранить вид вкладок и вызвать новый класс активности для customerdetails просмотра

+0

Сохраните это. Я бы этого не сделал. – Blundell

+0

Укажите, пожалуйста, код. Это должно быть простой реализацией. –

+0

Что еще вам нужно? У вас есть намерение? –

ответ

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

Не тестировался, но что-то, как это должно работать. Если нет, я помогу вам это исправить.

+0

Спасибо, я добавил свой код выше – user1320395

+0

И он работает, если вы замените OnItemClickListener моим? –

+0

getLocalActivityManager не будет работать с ListActivity. Любая идея, как сохранить вкладку в виде подробной страницы – user1320395

Смежные вопросы