如何在Android中使用Gallery View,但在另一个页面上

如何在Android中使用Gallery View,但在另一个页面上,android,gallery,android-context,Android,Gallery,Android Context,我在res/layout文件夹中有两个布局文件:main.xml和page2.xml。 在main.xml中,我得到了欢迎信息和开始的按钮 setContentView(R.layout.page2); 更改为page2.xml 在我决定在page2.xml中添加Gallery视图之前,它工作得很好 当我从开始的ContentView设置到第2页,如下面所示,一切正常 public void onCreate(Bundle savedInstanceState) { super.onC

我在res/layout文件夹中有两个布局文件:main.xml和page2.xml。 在main.xml中,我得到了欢迎信息和开始的按钮

setContentView(R.layout.page2);
更改为page2.xml

在我决定在page2.xml中添加Gallery视图之前,它工作得很好

当我从开始的ContentView设置到第2页,如下面所示,一切正常

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.page2); 
    Gallery g = (Gallery) findViewById(R.id.gallery);       
    g.setAdapter(new ImageAdapter(this));
但当我第一次调用main.xml显示may起始页时

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main); 
    Gallery g = (Gallery) findViewById(R.id.gallery);       
    g.setAdapter(new ImageAdapter(this));
应用程序返回错误。 我知道问题在于上下文是否一致

    g.setAdapter(new ImageAdapter(this));

但我完全不知道如何传递正确的上下文或以另一种方式解决它(但我不想将所有布局都放在一个xml文件中)。

您的解释并不完全清楚(日志从来没有伤害过),但我认为您得到了一个空指针异常,因为
gallery
未在
main.xml
中定义。您的问题有两种解决方案:

  • 将你的两个“页面”分成两个活动。这是一种更自然的处理方式。试着旋转你的手机/模拟器,你就会明白我的意思。当用户单击按钮或其他按钮时,请调用
    startActivity()
    ,然后调用
    finish()
    ,这样您的欢迎活动就不会悬而未决
  • 问题在于,
    findViewById()
    作用于当前活动中“可见”的任何内容。由于您设置了
    setContentView(main)
    ,因此您的
    库将不在那里。只有在调用“更改页面”(
    setContentView(R.layout.page2);
    )之后,才能尝试“获取”图库

  • 但是,我强烈建议您选择第一个选项。

    出现了什么错误(异常)?您说有一个按钮使用setContentView打开page2.xml,但稍后您将显示为示例2 onCreate。我不清楚你是否有一个或两个活动。在屏幕上我只是看到它被迫退出。我试图在调试器中进一步检查smth,但找不到任何详细的错误代码。我有一个活动。我不使用Intent来启动新的活动,只需在按下按钮后设置另一个ContentView:public void buttonPressed(View target){setContentView(R.layout.page2);}Thx很多。两项活动正在正常进行。我认为简单的布局更改可以保留一项活动。我还尝试在更改视图后移动设置适配器:“public void buttonPressed(view target){setContentView(R.layout.page);g.setAdapter(new ImageAdapter(this));}”,但错误仍然存在。所以我会使用选项一:)太好了!就像我说的,这更自然,因为否则你还得拯救国家(hasSeenWelcome),等等。把它们分开比较容易。