Eclipse Helios中的Android按钮(ADT 10.0.1)无法正确链接

时间:2011-05-28 00:52:05

标签: android button sdk hyperlink adt

这是我在网站上发表的第一篇文章,我将尝试与所要求的提示一样具体。我正在使用eclipse Helios,ADT 10.0.1

我一直在研究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
            }
        });

所以我的问题是,如何让布局frontmenu上的按钮链接到他们应该的位置?是否有任何语法错误或需要添加到此代码段以使其正常运行的内容?

提前致谢!

1 个答案:

答案 0 :(得分:0)

好吧,我先说:这不是android sdk的意思。你需要为屏幕内容的每次更改都有一个活动,这可以通过切换内容来实现。也许看看这里,如果你还没有这样做:http://developer.android.com/guide/topics/fundamentals.html

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

然而,可以像你尝试的那样去做。这是一个简短的片段:

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);
}

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

第二,如果你想这样解决它,你必须手动夸大你的布局。否则你会在任何地方得到空指针,因为这些布局及其子节点(按钮等)是懒惰地实例化的(只有在需要时才会实例化,例如在setcontentview中调用)。

和第三:嗯......真的,为每个屏幕内容做一个活动的应用程序:)