链接android上的按钮

时间:2012-01-16 20:11:36

标签: android button android-activity

我似乎无法在页面上链接多个按钮。 页面基本上有一个标题,下面有3个按钮,链接到3个不同的主题 我尝试过的代码(我在本网站上找到的代码)是:

   package com.ICTrevisionapp;

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

    public class topicstoquiz extends Activity {
        /** Called when the activity is first created. */
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.topics);}
        public void onClick(View v) {
        {
            Button clickedButton = (Button) v;
            setContentView(0);
            switch(clickedButton.getId())
            {
            case R.id.button2:
                    setContentView(R.layout.topic1);
                Intent myIntent = new Intent (v.getContext(),topicstotopicone.class);
                startActivityForResult(myIntent, 0);
                break;
            case R.id.button3:
                setContentView(R.layout.topic2);
                break;
            }
        }
    }

案件部分。

我也试过了代码:

        Intent myIntent = new Intent (view.getContext(),topicstoquiz.class);
        startActivityForResult(myIntent, 0);

但我似乎只能将它链接到一个活动而只能从一个按钮链接。

我可能完全错了,所以如何将页面上的每个按钮链接到单独的活动,以便我可以将它们链接到其他页面。 (如果这是有道理的)

4 个答案:

答案 0 :(得分:2)

我更喜欢对此采取“漫长的道路”:

在你的onCreate中:
Button button2 = (Button)findViewById(R.id.button2);
button2.setOnClickListener(yourListener);

然后创建监听器方法:
private OnClickListener yourListener = new OnClickListener(){
public void onClick(View v){
Intent yourIntent = new Intent(yourCurrentActivity.this, classYoureNavigatingToo.class);
startActivity(yourIntent);
}
};

因此,您可以为每个按钮设置单独的侦听器,指向不同的类。如果它有助于不要忘记标记为答案!

更新:

public class topicstoquiz extends Activity {
/** Called when the activity is first created. */
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.topics);
Button button2 = (Button)findViewById(R.id.button2);
Button button3 = (Button)findViewById(R.id.button3);
Button button4 = (Button)findViewById(R.id.button4);
button2.setOnClickListener(button2Listener);
button3.setOnClickListener(button3Listener);
button4.setOnClickListener(button4Listener);
}

像我上面所示设置你的点击听众。您是否在AndroidManifest.xml中指定了您的活动?请在关闭力量后跟踪堆栈跟踪结果。

答案 1 :(得分:1)

对于多个按钮,我个人更喜欢类似于你所做的开关语句方法。首先,将OnClickListner添加到您的活动中然后实现切换。

    public class MainActivity extends Activity implements OnClickListener {...

然后在活动中:

    public void onClick(View view) {
        Intent i;

        switch(view.getId()) {

        case R.id.buttonOneId:

            i = new Intent(getApplicationContext(), Activity1.class);
                    startActivity(i);   
            break;

        case R.id.buttonTwoId:

            i = new Intent(getApplicationContext(), Activity2.class);
                    startActivity(i);   
            break;
        }
    }

要启用该功能以使用活动中的按钮,请为每个按钮执行此操作:

 Button button = (Button) findViewById(R.id.buttonId);
   button.setOnClickListener(this);

替代方案,OnClickListner可以像这样设置为内嵌:

   Button button = (Button) findViewById(R.id.buttonId);
   button.setOnClickListener(new OnClickListener(){
        @Override
        public void onClick(View v){
            Intent i = new Intent(getApplicationContext(), Activity.class);
            startActivity(i);
        }
    });

如果使用内联方法,请重复其他按钮的代码。

答案 2 :(得分:1)

您还可以使用您在xml-layout中为相应按钮设置的android:onClick属性。这完全消除了对开关盒的需求。

android:onClick="onClickYourFirstButton"

在您的活动类中添加onClick方法

public void onClickYouFirstButton(View v) {

http://developer.android.com/reference/android/view/View.html#attr_android%3aonClick

答案 3 :(得分:0)

Button myButton = (Button) findViewById(R.id.my_button);
myButton.setOnClickListener ( or something like that)