【问题标题】:Android Buttons in Eclipse Helios (ADT 10.0.1) do not link properlyEclipse Helios (ADT 10.0.1) 中的 Android 按钮无法正确链接
【发布时间】:2011-09-03 18:39:45
【问题描述】:

这是我在网站上的第一篇文章,我会尽量按照所要求的提示具体说明。我正在使用带有 ADT 10.0.1 的 eclipse Helios

我一直在开发一个 Android 应用程序,它应该是星际争霸 II 的一般指南。非常基本的东西,它是用于编程课程的。它应该有一个带继续按钮的介绍背景,链接到主菜单。

主菜单包含几个按钮,它们都应该链接到创建的不同布局。当我在模拟器中启动我的应用程序时(我尝试了 12 级、9 级等),第一个按钮链接到菜单,但菜单上的按钮无法链接。我的代码中没有语法错误,但是它确实显示了除第一个按钮之外的所有按钮的整个黄色下划线。我已经对基本语法进行了一些修改,以使其不显示任何红色或黄色下划线,它也没有让我到任何地方。 当我从代码中删除最后一个按钮时,它是布局中的后退按钮,链接回前面的菜单,菜单上的按钮开始链接到最后一个按钮的链接,我的意思是代码中的最后一个.所以我认为它可能会跳过所有其他侦听器,只使用代码中的最后一个按钮,或者类似的东西。请记住,我还不太擅长编程。

这是代码的基本外观。

package lol.lol;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class ofk extends Activity {
    /** Called when the activity is first created. */
    @Override
    protected void onCreate(Bundle button1) {
        super.onCreate(button1);

        setContentView(R.layout.intro);

        Button button = (Button) findViewById(R.id.continuebutton);
        button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                setContentView(R.layout.frontmenu);

            }
        }); 




    final Button button2 = (Button) findViewById(R.id.aboutapp);
        button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {

                setContentView(R.layout.aboutsc2g);
            }
        }); 




        final Button button3 = (Button) findViewById(R.id.aboutsc);
        button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {

                setContentView(R.layout.aboutsc2);
                // Perform action on click
            }
        });

        final Button button4 = (Button) findViewById(R.id.micro);
        button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {

                setContentView(R.layout.micro);
                // Perform action on click
            }
        });

        final Button button5 = (Button) findViewById(R.id.macro);
        button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {

                setContentView(R.layout.macro);
                // Perform action on click
            }
        });

        final Button button6 = (Button) findViewById(R.id.mechanics);
        button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {

                setContentView(R.layout.mechanics);
                // Perform action on click
            }
        });

        final Button button7 = (Button) findViewById(R.id.zergbasics);
        button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {

                setContentView(R.layout.zergbasics);
                // Perform action on click
            }
        });

        final Button button8 = (Button) findViewById(R.id.terranbasics);
        button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {

                setContentView(R.layout.terranbasics);
                // Perform action on click
            }
        });

        final Button button9 = (Button) findViewById(R.id.protossbasics);
        button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {

                setContentView(R.layout.protossbasics);
                // Perform action on click
            }
        });

        final Button button10 = (Button) findViewById(R.id.backbutton);
        button.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {

                setContentView(R.layout.frontmenu);
                // Perform action on click
            }
        });

所以我的问题是,如何让布局前菜单上的按钮链接到它们应该链接的位置?是否有任何语法错误或我需要添加到此代码 sn-p 以使其正常运行?

提前致谢!

【问题讨论】:

  • 请发布您的布局。

标签: android button sdk hyperlink adt


【解决方案1】:

好吧,让我先说:这不是 android sdk 的意思。你必须有一个活动来处理一屏内容的每一次变化,这是通过这里的内容视图切换来实现的。如果你还没有这样做,也许看看这里:http://developer.android.com/guide/topics/fundamentals.html

正确的方式(使用活动),用户可以使用系统后退按钮返回,因此基本上不需要后退按钮,用户会期望系统后退按钮像那。现在,按下系统后退按钮会导致应用“关闭”并显示之前打开的内容。

但是,可以像您尝试的那样进行操作。这是一个简短的 sn-p:

public class Start extends Activity {
/** Called when the activity is first created. */
@Override
protected void onCreate(Bundle savedInstanceState) {

LayoutInflater mLayoutInflater = getLayoutInflater();
final LinearLayout mLinearLayoutIntro = (LinearLayout) mLayoutInflater.inflate(R.layout.intro, null);

setContentView(mLinearLayoutIntro);

final LinearLayout mLinearLayoutFrontMenu = (LinearLayout) mLayoutInflater.inflate(R.layout.frontmenu, null);

Button continueButton = (Button) findViewById(R.id.continuebutton);
continueButton.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
    setContentView(mLinearLayoutFrontMenu);

    }
});

final LinearLayout mLinearLayouAboutSc2g = (LinearLayout) mLayoutInflater.inflate(R.layout.aboutsc2g, null);

final Button aboutAppButton = (Button) mLinearLayoutFrontMenu.findViewById(R.id.aboutapp);
aboutAppButton.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {

    setContentView(mLinearLayouAboutSc2g);
    }
});

final Button backButton = (Button) mLinearLayoutFrontMenu.findViewById(R.id.backbutton);
backButton.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {

    setContentView(mLinearLayoutIntro);
    // Perform action on click
    }
});
super.onCreate(savedInstanceState);
}

}

你看,你的代码有很大的不同。您的代码中的第一个错误是将点击侦听器仅绑定到第一个按钮(可能是复制/粘贴然后忘记了)。

其次,如果你想这样解决它,你必须手动膨胀你的布局。否则你会在任何地方得到空指针,因为这些布局及其子项(按钮等)是惰性实例化的(仅在需要它们时,例如在 setcontentview 中调用)。

第三个:嗯...真的,为每一屏内容做一个活动:)

【讨论】:

  • 非常感谢!我一直在尝试很多小东西。是的,关于听众被绑定到“按钮”的整个事情只是一个复制粘贴错误到这里,我摆弄了很多,以及按钮本身的 ID。实际上,我还尝试为每个按钮提供它自己的活动,但是当我尝试以我认为正确的方式将它们包含在内时,我遇到了无法解决的语法错误。再次,非常感谢您的投入,因为这个项目让我对整个编程非常感兴趣!爱你! :D
  • 尝试实现您提供的代码并对其进行了一些修改,但没有任何结果。大多数情况下,模拟器会卡在 ActivityManager 启动意图或类似的东西上。我还尝试为原始代码中的第二个按钮创建一个单独的类,并为 xml 实现另一个活动,但它也不会启动。我在这里完全不知所措..
  • 看看这里:dl.dropbox.com/u/1831328/Test1.zip 并且不要忘记:它不是这样编码的!相反,请查看意图并创建许多活动。
  • 非常感谢您的帮助!你真是天赐之物。基本上我没时间了,所以我做了一个简单的 webview 来显示 YouTube 并记录了我解决这个应用程序的问题,以证明我的能力,它应该很容易让我在课程中获得 A。爱你:D
  • 很高兴为您提供帮助...但现在您可以帮我一个忙并接受我的回答,还可以投赞成票 :-) 干杯
猜你喜欢
  • 2014-09-20
  • 1970-01-01
  • 1970-01-01
  • 2015-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-23
  • 2018-01-17
相关资源
最近更新 更多