我是 android 的新手,我只是不知道如何让操作栏按照我想要的方式工作。我想单击操作栏上的一个项目,该项目在 setContentView 和不同的 XML 文件之间变化。
我有以下 XML 文件: activity_main_vertical_view.xml activity_main.xml
(请注意,这不是为了让我可以在横向模式下看到它,我知道制作一个名为 layer-land 的文件夹。我希望我的 xml 文件可以在纵向模式下水平查看,这就是为什么我尝试更改 XML)。
我的操作栏中有一个“更改 View ”项目,我想在使用它时切换 XML。但是它不起作用。我做错了什么?
我有 2 个类: 主 Activity .java 垂直 View .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);
}
}
最佳答案
你没有遵守 android:onClick
的规则:
The method must be declared in the activity as public and accept a MenuItem as its only parameter, which indicates the item clicked.
您的方法将 View
作为参数,而不是 MenuItem
。
另请注意,此方法仅适用于 API 级别 11 及更高级别。为了向后兼容,您可能希望跳过 android:onClick
并改写 onOptionsItemSelected()
。
关于android - 如何使用android actionbar改变contentsView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12234188/