如何在 Android 中但在另一个页面上使用图库视图

发布于 2024-11-18 05:53:25 字数 979 浏览 4 评论 0原文

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

setContentView(R.layout.page2);

更改为 page2.xml。

它工作得很好,直到我决定在 page2.xml 中添加图库视图。

当我从开始的 ContentView 设置为 page2 时,如下所示,就可以了。

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 以显示可能的起始页面时...

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main); 
    Gallery g = (Gallery) findViewById(R.id.gallery);       
    g.setAdapter(new ImageAdapter(this));

应用程序返回错误。 我知道问题出在 Context 上

    g.setAdapter(new ImageAdapter(this));

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

I've got 2 layout files in res/layout folder: main.xml and page2.xml.
In the main.xml I've got welcome info and button which starts

setContentView(R.layout.page2);

to change to page2.xml.

It worked fine till I decided to add Gallery view in page2.xml.

When I set from begining ContentView to page2 like below it's ok.

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.page2); 
    Gallery g = (Gallery) findViewById(R.id.gallery);       
    g.setAdapter(new ImageAdapter(this));

But when I call main.xml first to show may start page...

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main); 
    Gallery g = (Gallery) findViewById(R.id.gallery);       
    g.setAdapter(new ImageAdapter(this));

the app returns error.
I know that the problem is with Context in line

    g.setAdapter(new ImageAdapter(this));

but I completely don't know how to pass right context or solve it in another way (but I don't want to have all layout in one xml file).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

小…楫夜泊 2024-11-25 05:53:25

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

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

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

It's not entirely clear from your explanation (logs never hurt), but I think you're getting a null pointer exception because gallery is not defined in your main.xml. There are two solutions for your problem:

  1. Split your two "pages" into two activities. This is a much more natural way of dealing with things. Try rotating your phone/emulator and you'll see what I mean. When the user clicks on the button or whatever, call startActivity() and then call finish(), so your welcome activity is not left hanging about.
  2. The problem is that findViewById() acts on whatever is "visible" in the activity right now. Since you did setContentView(main), your Gallery will not be there. Try "getting" the gallery only after you make the call to "change pages" (setContentView(R.layout.page2);).

However, I would strongly advice you go with the first option.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文