2011-11-07 4 views
0

작동하지 setTitle이라는 내가 TabActivityGroup 있습니다안드로이드 ActivityGroup의 자식 활동

MainActivity 클래스는 몇 가지 탭을 포함, DB에서 그 이름을 로딩.

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이 .IN가 나는 이름 이군이 방법을 사용하여 않았다 제목을 설정하려는 첫 번째 활동이다 : 현명한 같은 Sales, Admin, Inquiry은 내가 SalesActivityGroup 저놈 클래스가 생성 Sales를 들어 탭 이름

있습니다. 그러나

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

}

내가 제목 이름을 설정할 수 있습니다 어떻게 나에게 조언을 주시기 바랍니다 작동하지 않습니다. ActivityGroup를 사용하지 않는 것이 좋습니다 사전

+0

탭 활동에서 setTitle을 호출해야 할 수 있습니다. – blessenm

+0

탭 활동 호출 방법? 말해주세요. – Piraba

답변

2

당신이 좋아하는 부모 탭 활동에 액세스 할 수 있습니다 호환성 라이브러리를 사용하여 조각과 FragmentManager를 사용하십시오

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

설명 : 당신의 getParent 처음 호출 할 때 나의 이해, 을 바탕으로

시간, 당신은 자식 활동을 시작한 활동 그룹을 얻습니다.

두 번째로 getParent를 호출하면 활동 그룹을 시작한 탭 활동이 표시됩니다.

setTitle은 tabactivity에 의해 유지되는 활동 창에 대해 작동해야합니다. 하위 액티비티는 탭 액티비티의 프레임 레이아웃에서 렌더링됩니다. 따라서 자식 활동에서 상위 탭 활동에 액세스하여 제목을 설정합니다.

+0

예. 작동 중입니다. 많이 감사합니다. – Piraba

+0

좋은 친구. –

+0

@blessenm 왜 getParent(). getParent() ....를 작성했는지 설명 할 수 있습니까? 나는 알고 싶어하고 또한 미래의 사용자를 도울 것입니다. 감사합니다 –

1

이 작업을 수행하는 가장 좋은 방법은 방법

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

부모 활동에서이 메소드를 구현을 구현하는 것입니다. 예를 들어, 제 경우에는 3 가지 활동이 있습니다.

  1. 홈 활동
  2. 앨범 활동

내 집 활동이 아티스트의 활동과 앨범 활동과 함께 TabHost를 포함

  • 아티스트 활동. 나는 Home Activity에서 위의 방법을 구현했다. 아티스트 활동 및 앨범 활동의 제목은 해당 활동의 OnResume 메소드에서 설정됩니다.

  • 관련 문제