2013-12-15 174 views
0

我知道這個問題之前已經被問過(其他2我發現類似),但他們沒有解決場景的這一方!Android導航抽屜抽象化

所以這裏的情景,我創建了一個類,因爲這:

public class BaseActivity extends ActionBarActivity { 

    // Implemeted the Actionbar and navigation drawer here! 
    // and it containts onCreate method and setContentView 
} 

BaseActivity XML:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.v4.widget.DrawerLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/base_nav_drawer" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 
    <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"> 
    </LinearLayout> 
    <ListView 
      android:id="@+id/base_left_drawer" 
      android:layout_width="320dp" 
      android:layout_height="match_parent" 
      android:layout_gravity="start" 
      android:choiceMode="singleChoice" 
      android:divider="@android:color/transparent" 
      android:dividerHeight="0dp" 
      android:background="#dddddd"/> 
    <ListView 
      android:id="@+id/base_right_drawer" 
      android:layout_width="320dp" 
      android:layout_height="match_parent" 
      android:layout_gravity="end" 
      android:choiceMode="singleChoice" 
      android:divider="@android:color/transparent" 
      android:dividerHeight="0dp" 
      android:background="#dddddd"/> 
</android.support.v4.widget.DrawerLayout> 

然後從中伸出我的主類/活動:

public class Main extends BaseActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
     } 
    } 

以下是主要活動XML:

<?xml version="1.0" encoding="utf-8"?>  
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:orientation="vertical" 
       android:id="@+id/stream_new_layout" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent"> 

    <TextView android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="hi dude"/>  
</LinearLayout> 

所以現在我可以看到的動作條和導航抽屜裏我的主要活動,但是,如果我嘗試使用setContectView(R.layout.main)我的主要活動使用XML佈局我創建具體到本次活動中,導航抽屜將不顯示再來;我猜是因爲主活動上的onCreatesetContectView,覆蓋了我從中擴展的BaseActivity中的相同語句。任何解決方案?

+0

你可以發佈這2個活動的onCreate方法的完整實現嗎?我無法想象的ActionBar完全消失... – FWeigl

+0

我的壞!出現操作欄。只有導航抽屜不工作/顯示。 – kevoroid

回答

1

我希望我理解你的權利:您正在使用您的BaseActivitysetContentView()建立在你的MainActivity抽屜,setContentView()做你的佈局設置的休息嗎? 如果是這樣的話:它不會那樣工作。第二次你做setContentView()它會取代舊的佈局,然後沒有更多的抽屜。 您需要在MainActivitysetContentView()中使用佈局中的抽屜。 另外,兩次使用setContentView(),第一次是沒用的。

+0

所以要清楚,我不應該在我的BaseActivity中使用「setContentView()」,而且,我必須使用我以上發佈的BaseActivity XML作爲我的主要活動的xml佈局? – kevoroid

+0

是的,嘗試一下。如果你想有一個抽屜,那麼在你的MainActivity中使用的佈局必須有一個,是的。 – FWeigl