Android ActivityGroup的子活动setTitle无法正常工作

时间:2011-11-07 04:46:08

标签: android

我有TabActivityGroup:

MainActivity类包含一些选项卡,该名称从db加载。 Sales, Admin, Inquiry同样聪明我有标签名称

对于Sales,我创建了SalesActivityGroup。该类是:

public class SalesActivityGroup extends ActivityGroup {
   public static SalesActivityGroup group;
   private  ArrayList<View> history;
   private LocalActivityManager mActivityManager;

   @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       this.history = new ArrayList<View>();
       group = this;
         mActivityManager = getLocalActivityManager();
        Intent i = new Intent(getBaseContext(), SalesRouteActivity.class);
        Bundle bundle = new Bundle();
        bundle.putInt("positions", -1);
        i.putExtras(bundle);
        View view = mActivityManager.startActivity("Sales",i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP )).getDecorView();
    replaceView(view);

}

public void replaceView(View v) {
    history.add(v);
    setContentView(v);
}

public void back(){
    if ( history.size() > 1 ){
       history.remove(history.size() - 1);
       View v = history.get(history.size() - 1);
       setContentView(v);
    }
    else {
       this.finish();
    }
}

@Override
public void onBackPressed() {
    SalesActivityGroup.group.back();
}
}

SalesRouteActivity是第一个Activity。在那里我想设置标题名称。我确实使用过这种方式。但是没有工作

 public class SalesRouteActivity extends Activity{
       @Override
       public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       // setContentView(R.layout.sales_routes);
      //getWindow().setTitle("Route");
          View viewToLoad = LayoutInflater.from(SalesActivityGroup.group).inflate(R.layout.sales_routes, null);
         this.setContentView(viewToLoad); 
         //this.setTitle("Route");
        //getWindow().setTitle("Route");
         SalesActivityGroup.group.setTitle("Route");
    }

}

请建议我如何设置标题名称。

提前致谢

3 个答案:

答案 0 :(得分:2)

您可以访问父标签活动,例如

getParent().getParent().setTitle("New Tilte");

说明:

根据我的理解, 当您第一次调用getParent时,您将获得启动子活动的活动组。

第二次调用getParent时,您将获得启动活动组的选项卡活动。

setTitle应该适用于由tabactivity持有的活动窗口。子活动在选项卡活动的framelayout中呈现。因此在子活动中访问父选项卡活动以设置标题。

答案 1 :(得分:1)

执行此操作的最佳方法是实现方法

protected void onChildTitleChanged(Activity childActivity,CharSequence title) {
    super.onChildTitleChanged(childActivity, title);
    setTitle(title);
}

在父活动中实施此方法。例如,在我的情况下,我有三个活动。

  1. 家庭活动
  2. 艺术家活动
  3. 专辑活动
  4. 我的家庭活动包含带有艺术家活动和专辑活动的TabHost。 我在Home Activity中实现了上述方法。艺术家活动和专辑活动的标题在相应活动的OnResume方法中设置。

答案 2 :(得分:0)

不建议使用ActivityGroup,它已被弃用 Refer to this link 请使用兼容性库

使用Fragment和FragmentManager