2012-05-07 5 views
0

1つのアプリケーションを開発していて、5つのタブを表示する必要があり、それぞれのタブで別のアクティビティを呼び出す必要があります。メニュー。2回目のタブをクリックしたときにアクティビティが呼び出されない

主な問題は、自分のアクティビティがタブ変更イベントでのみ呼び出されることです。。最後にタブをクリックして初めてメニューを表示したときに、そのタブを再度クリックするとメニューを選択した後に何も起こりません。

どのようにこの種の問題を解決するには?この作業を行う他の方法はありますか?
すべてのヘルプはここappreciated.Thanks

になります私のコードは次のとおりです。

public class More extends ActivityGroup{ 

    Button btn1; 
    ExpandableListView elw; 
    Context ctx; 
    public ListView modeList; 
    @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      ctx=this; 

      Toast.makeText(More.this,"in more",200).show(); 
      setContentView(R.layout.more); 

      AlertDialog.Builder builder = new AlertDialog.Builder(this); 
      builder.setTitle("More Option"); 

      modeList = new ListView(this); 
      String[] stringArray = new String[] { "About", "Settings","Invite By Message","Privacy Policy","Deactivate Account","Exit" }; 
      ArrayAdapter<String> modeAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, android.R.id.text1, stringArray); 
      modeList.setAdapter(modeAdapter); 


      builder.setView(modeList); 
      final Dialog dialog = builder.create(); 

      dialog.show(); 
modeList.setOnItemClickListener(new OnItemClickListener() { 

    @Override 
    public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) { 
     // TODO Auto-generated method stub 
     String item=(String) modeList.getItemAtPosition(position); 
     Toast.makeText(More.this,item,200).show(); 
     switch(position) { 
     case 0: 
      setContentView(R.layout.about); 
      dialog.dismiss(); 
      TabHost tabHost = welcome.self.getTabHost(); 
      tabHost.setCurrentTab(4); 

       // tabHost.setCurrentTab(4); 
      break; 
     case 1: 
      setContentView(R.layout.settings); 
      dialog.dismiss(); 
      break; 
     case 2: 
      setContentView(R.layout.messages); 
      dialog.dismiss(); 
      break; 
     case 3: 
      setContentView(R.layout.policy); 
      dialog.dismiss(); 
      break; 
     case 4: 
      Toast.makeText(More.this,"Deactivate the Account",200).show(); 
      dialog.dismiss(); 
      break; 
     default: 
      Toast.makeText(More.this,"Exit the application",200).show(); 
      dialog.dismiss(); 
      welcome.self.finish(); 
      }    
    } 
}); 
+2

あなたのコードを表示すると良いでしょう... – AndroidDev

答えて

1
modeList.setOnItemClickListener(new OnItemClickListener() { 

    @Override 
    public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) { 
     // TODO Auto-generated method stub 
     String item=(String) modeList.getItemAtPosition(position); 
     Toast.makeText(More.this,item,200).show(); 
     switch(position) { 
     case 0: 
      setContentView(R.layout.about); 
      dialog.dismiss(); 
     // TabHost tabHost = welcome.self.getTabHost();-> Intent abc; 

     // tabHost.setCurrentTab(4);---->abc.getClass(More.this , NewClass.class); 

       // tabHost.setCurrentTab(4); 
      break; 
     case 1: 
      setContentView(R.layout.settings); 
      dialog.dismiss(); 
      break; 
     case 2: 
      setContentView(R.layout.messages); 
      dialog.dismiss(); 
      break; 
     case 3: 
      setContentView(R.layout.policy); 
      dialog.dismiss(); 
      break; 
     case 4: 
      Toast.makeText(More.this,"Deactivate the Account",200).show(); 
      dialog.dismiss(); 
      break; 
     default: 
      Toast.makeText(More.this,"Exit the application",200).show(); 
      dialog.dismiss(); 
      welcome.self.finish(); 
      }    
    } 
}); 

今すぐあなたのNewClass.java

public class NewClass extends TabActivit{ 


    @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 

      setContentView(R.layout.newclass); 

Resources ressources = getResources(); 
     TabHost tabHost = getTabHost(); 

     // Android tab 
     Intent intentAndroid = new Intent().setClass(this, AndroidActivity.class); 
     TabSpec tabSpecAndroid = tabHost 
      .newTabSpec("Android") 
      .setIndicator("", ressources.getDrawable(R.drawable.icon_android_config)) 
      .setContent(intentAndroid); 

     // Apple tab 
     Intent intentApple = new Intent().setClass(this, AppleActivity.class); 
     TabSpec tabSpecApple = tabHost 
      .newTabSpec("Apple") 
      .setIndicator("", ressources.getDrawable(R.drawable.icon_apple_config)) 
      .setContent(intentApple); 

     // Windows tab 
     Intent intentWindows = new Intent().setClass(this, WindowsActivity.class); 
     TabSpec tabSpecWindows = tabHost 
      .newTabSpec("Windows") 
      .setIndicator("", ressources.getDrawable(R.drawable.icon_windows_config)) 
      .setContent(intentWindows); 

     // Blackberry tab 
     Intent intentBerry = new Intent().setClass(this, BlackBerryActivity.class); 
     TabSpec tabSpecBerry = tabHost 
      .newTabSpec("Berry") 
      .setIndicator("", ressources.getDrawable(R.drawable.icon_blackberry_config)) 
      .setContent(intentBerry); 

     // add all tabs 
     tabHost.addTab(tabSpecAndroid); 
     tabHost.addTab(tabSpecApple); 
     tabHost.addTab(tabSpecWindows); 
     tabHost.addTab(tabSpecBerry); 

     //set Windows tab as default (zero based) 
     tabHost.setCurrentTab(2); 
    } 

} 


} 

あなたが好きなだけを使用することができる4つのタブがあります。 アンドロイドマニフェストに登録してください。 レイアウトファイルのtabhostがコード内のidと同じであることを確認してください。

私の答えを受け入れる場合は、右クリックしてください。

+0

私はすでに上記のようにtabactivityを拡張する1つのアクティビティのようにしています。私の質問はあなたが理解していないと思います.4番目のタブがクリックされ、リストビューが表示され、それは完璧ですが、問題は、アイテムが選択され、新しいスクリーンが開き、同じ現在のタブをクリックするとlistview.iが表示されないことです。同じタブを何回クリックすればいいのでしょうか?常にlistviewを開く必要があります。 – juned

2
TabHost tabs = (TabHost)findViewById(R.id.TabHost01); 

     tabs.setup(); 

     TabHost.TabSpec spec1 = tabs.newTabSpec("tag1"); 

     spec1.setContent(R.id.tab1); 
     spec1.setIndicator("TAB1"); 

     tabs.addTab(spec1); 

     TabHost.TabSpec spec2 = tabs.newTabSpec("tag2"); 
     spec2.setContent(R.id.tab2); 
     spec2.setIndicator("TAB2"); 

     tabs.addTab(spec2); 

は、あなたの方法では、詳細のためにこれを追加見http://www.mkyong.com/android/android-tablayout-example/を取ります。

問題がある場合は教えてください。解決したら右クリックしてください。アクティビティにレイアウトが含まれている必要があります。ここ

+0

私は、ダイアログボックスで使用しているスイッチのケースを、タブアクティビティに拡張されたアクティビティを開くようにリダイレクトさせます – divaNilisha

+0

ありがとう、あなたのlink.iで言及したアプリはActivityGroupを使用していますが、私のスイッチのケースでは新しいアクティビティを開こうとはしませんが、コンテンツビューを変更したいだけです。 – juned

+0

よくアクティビティ – divaNilisha

関連する問題