0

私は 1 つのアプリケーションを開発しており、5 つのタブを表示する必要があり、各タブで別のアクティビティを呼び出しています。最後のタブでメニューを表示しています。

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

では、この種の問題を解決するにはどうすればよいでしょうか。このタスクを実行する他の方法はありますか?
どんな助けでも大歓迎です.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();
            }               
    }
});
4

2 に答える 2

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

add this in your method, and for details take a look http://www.mkyong.com/android/android-tablayout-example/.

let me know if you have problem , click right if it is solved. Your activity must contain layout.

于 2012-05-07T06:53:12.423 に答える
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 つのタブを次に示します。Android マニフェストに登録します。レイアウト ファイルのタブホストの ID がコードと同じであることを確認してください。

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

于 2012-05-07T08:56:22.600 に答える