2012-09-02 52 views
1

我是新來的android,我只是無法弄清楚如何使操作欄以我想要的方式工作。我想單擊我的操作欄上的一個項目,該項目在setContentView與不同的XML文件之間進行更改。如何使用android操作欄更改內容查看

我有以下XML文件: activity_main_vertical_view.xml activity_main.xml中

(請注意,這是不是這樣我就可以在橫向模式下看到它,我知道做一個名爲層 - 文件夾我希望我的xml文件可以在肖像模式下水平查看,這就是爲什麼我要改變XML)。

我在我的操作欄中有一個「更改視圖」項目,我希望在使用XML時切換它。但它不起作用。我究竟做錯了什麼?

我有2類: MainActivity.java VerticalView.java

我的Manifest.xml具有下面的代碼相對於VerticalView

<activity 
    android:name=".VerticalView" 
    android:label="@string/title_activity_vertical_view" > 
    <meta-data 
     android:name="android.support.PARENT_ACTIVITY" 
     android:value="com.example.calendar.activity_main" /> 
</activity> 

我對activity_main.xml中菜單有以下代碼:

<item 
    android:id="@+id/change_view" 
    android:onClick="changeView" 
    android:orderInCategory="100" 
    android:showAsAction="never" 
    android:title="@string/change_view" > 
</item> 

我MainActivity.java具有下面的代碼:

public class MainActivity extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

    } 

    public void changeView(View view) { 
     Intent intent = new Intent(view.getContext(), VerticalView.class); 
     startActivity(intent); 

    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.activity_main, menu); 
     return true; 

    } 
} 

最後,我VerticalView.java具有下面的代碼:

public class VerticalView extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main_vertical_view); 

    } 

} 

回答

1

您沒有按照規則:

的方法必須在活動中被宣佈爲公共和接受一個MenuItem作爲它唯一的參數,它表示被點擊的項目。

您的方法需要View作爲參數,而不是MenuItem

另請注意,此方法僅適用於API Level 11及更高版本。爲了向後兼容,您可能希望跳過並改寫onOptionsItemSelected()

+0

看起來我一定錯過了Menu的文檔並直接進入了操作欄。爲noobs添加這個鏈接,他需要更好的回答。感謝CommonsWare http://stackoverflow.com/questions/7479992/handling-a-menu-item-click-event-android –