ユーザーがタブをクリックしたときに起動するタブアクティビティを動的に選択します

StackOverflow https://stackoverflow.com/questions/6311162

質問

タブで使用されているアクティビティをネストしたときのアクティビティグループの使用に関する多くの投稿を見てきました。私の場合、アクティビティ内からアクティビティを起動したくありませんが、ユーザーがタブをクリックするたびに起動するアクティビティを動的に(フラグ値に基づいて)決定したいと思います。

私はこのようなことをしています:

タブアクティビティクラス:

 tabHost = (TabHost) findViewById(android.R.id.tabhost); 
 tabHost.setup();
 intent = new Intent().setClass(this, MyActivityGroup.class);
 TabHost.TabSpec spec = tabHost.newTabSpec("someTag");      
 View tabIndicator = LayoutInflater.from(this).inflate(R.layout.tab_resource, getTabWidget(), false);
 TextView title = (TextView) tabIndicator.findViewById(R.id.tab_title); 
 title.setText(strTag);
 ImageView icon = (ImageView) tabIndicator.findViewById(R.id.tab_icon);
 icon.setImageResource(R.drawable.tab_icon);
 spec.setIndicator(tabIndicator).setContent(intent); 
 tabHost.addTab(spec);

MyActivityGroupクラス:

 public class MyActivityGroup extends ActivityGroup
 {
    public static MyActivityGroup group;

    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {  
       group = this;  
           SelectActivity();
   }  

      public void SelectActivity()
      {
        View view = null;
        Intent intent = null;
       Window w = null;
       LocalActivityManager l = getLocalActivityManager();
       if( CheckFlag() )
       {
           intent = new Intent(this, Activity1.class);
           w = l.startActivity("Activity 1", intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));
           view = w.getDecorView();  
       }
       else
       {
       intent = new Intent(this,Activity2.class);
       w = l.startActivity("Activity 2", intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));
           view = w.getDecorView();  
  }
  setContentView(view);  
  }

}

Activity1、Activity2、およびMyActivityGroupをマニフェストファイルに追加しました。タブのクラスで、TABの意図を設定したときにMyActivityGroupをActivity1またはActivity2に置き換えた場合、それらは正常に起動します。しかし、MyActivityGroupを使用すると、MyActivityGroup :: SelectActivityがStartActivityにクラッシュします。

助言がありますか? :s

役に立ちましたか?

解決

私は電話しなければならなかったことが判明しました

l.dispatchCreate(savedInstanceState);

selectActivity(). 。これが誰かを助けることを願っています!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top