1

我是 android 新手,我只是不知道如何使操作栏按我想要的方式工作。我想单击我的操作栏上的一个项目,该项目在 setContentView 到不同的 XML 文件之间发生变化。

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

(请注意,这不是让我可以在横向模式下看到它,我知道创建一个名为 layer-land 的文件夹。我希望我的 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);

    }

}
4

1 回答 1

1

您没有遵守以下规则android:onClick

该方法必须在 Activity 中声明为 public 并接受 MenuItem 作为其唯一参数,该参数指示单击的项目。

您的方法将 aView作为参数,而不是 a MenuItem

另请注意,此方法仅适用于 API 级别 11 及更高级别。为了向后兼容,您可能希望跳过android:onClick并覆盖onOptionsItemSelected()

于 2012-09-02T11:26:33.337 回答