2012-03-19 35 views
8

Hiện tại, tôi đang sử dụng ActionBarSherlock. Tôi muốn khởi chạy SecondActivity từ MainActivity.Tắt theo chương trình android: windowActionBarChế độ chơi từ thanh tác vụ

MainActivity đang sử dụng thanh tác vụ với kiểu dáng windowActionBarOverlay được bật. SecondActivity đang sử dụng thanh tác vụ với kiểu dáng windowActionBarOverlay bị tắt. Do đó, đây là cách XML của tôi trông như thế nào.

<application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:debuggable="false" > 
    <activity 
     android:name=".MainActivity" 
     android:label="@string/app_name" 
     android:theme="@style/ThemeWithActionBarOverlay" 
     android:screenOrientation="nosensor" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name=".SecondActivity" 
     android:theme="@style/ThemeWithoutOverlay"> 
    </activity> 
</application> 

<resources> 
    <style name="ThemeWithActionBarOverlay" parent="@style/Theme.Sherlock"> 
     <item name="android:windowActionBarOverlay">true</item> 
     <item name="abIcon">@drawable/ic_home</item> 
     <item name="abTitleTextStyle">@style/ActionBarCompatTitle</item> 
    </style> 

    <style name="ThemeWithoutOverlay" parent="@style/Theme.Sherlock"> 
     <item name="abIcon">@drawable/ic_home</item> 
     <item name="abTitleTextStyle">@style/ActionBarCompatTitle</item> 
    </style> 
</resources> 

Tuy nhiên, bằng cách làm như vậy, trong SecondActivity, tôi nhận ra tôi không bao giờ có thể có một nút lên/trở lại phía trên bên trái của thanh hành động. Mặc dù có biểu tượng được hiển thị, nó không thể nhấn được. Chỉ bằng cách sử dụng lại cùng một chủ đề (ThemeWithActionBarOverlay) là MainActivity, chỉ nút lên/quay lại mới hiển thị. Tuy nhiên, nếu tôi để SecondActivity sử dụng cùng một chủ đề như MainActivity, tôi không tìm thấy cách nào để tắt hoạt động windowActionBarOverlay.

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

    setContentView(R.layout.history_list_activity); 

    ActionBar actionBar = this.getActionBar(); 

    actionBar.setDisplayHomeAsUpEnabled(true); 
    // How to turn android:windowActionBarOverlay attribute to false during runtime? 
    // actionBar.??? 
} 

Câu hỏi của tôi là

  1. Tại sao các hoạt động trẻ phải sử dụng thanh tác vụ có cùng chủ đề như cha mẹ, để có thích lên/trở lại nút hiển thị? Có cách nào tôi có thể sử dụng các chủ đề khác nhau, nhưng có nút lên/quay lại xuất hiện trên hoạt động của trẻ không?
  2. Có thể bật kiểu windowActionBarOverlay trong khi chạy không?
+2

Vấn đề thứ hai của bạn có được giải quyết không? Tôi cũng tìm kiếm như vậy. – Kameswari

Trả lời

4

Để trả lời câu hỏi đầu tiên của bạn, bạn không cần phải có hoạt động phụ huynh và trẻ em sử dụng cùng một chủ đề cho nút 'Lên' để hoạt động. Trong thực tế, tôi đang làm việc trên một ứng dụng hoạt động cha/con tương tự, và nó hoạt động tốt bằng cách sử dụng hai chủ đề khác nhau (một chủ đề không có lớp phủ cho phụ huynh và chủ đề toàn màn hình (có lớp phủ) cho trẻ).

Có phải là một lý do tại sao nó không được làm việc ...

  • Hãy chắc chắn rằng bạn đã xác định MainActivity là mẹ của hoạt động thứ hai. Bạn có thể làm điều đó bằng cách mã, hoặc cách ưa thích, trong AndroidManifest.xml:

    <activity 
        android:name=".SecondActivity" 
        <meta-data 
         android:name="android.support.PARENT_ACTIVITY" 
         android:value=".MainActivity" /> 
    </activity> 
    
  • Hãy chắc chắn rằng trong hoạt động con bạn, bạn đã kích hoạt 'lên' chuyển hướng:

    final ActionBar actionBar = getSupportActionBar(); 
    actionBar.setDisplayHomeAsUpEnabled(true); 
    

Đối với câu hỏi thứ hai của bạn, hãy thử các trọng 'windowActionBarOverlay' trong chủ đề các 'ThemeWithoutOverlay' để false:

<style name="ThemeWithoutOverlay" parent="@style/Theme.Sherlock"> 
    <item name="android:windowActionBarOverlay">false</item> 
    <item name="windowActionBarOverlay">false</item>< 
    <item name="abIcon">@drawable/ic_home</item> 
    <item name="abTitleTextStyle">@style/ActionBarCompatTitle</item> 
</style> 
Các vấn đề liên quan