0
main.xml
--------
|button1| (button press)>page1.xml
|button2| (button press)>page2.xml
|button3| (button press)>page3.xml
|button4| (button press)>page4.xml
|button5| (button press)>page5.xml
|button6| (button press)>page6.xml
-------------------------------------------

单击按钮时,它会转到相应的页面。实现这一点的最佳/最简单的方法是什么?当我尝试 onclick 侦听器时,我尝试了一切都无济于事。我可以让一个听众工作,但是当我尝试让多个听众工作时,它就搞砸了,我无法弄清楚。我目前的方法是使用这 2 个 java 文件
activity1.java

package install.fineline;

import android.app.Activity;
import android.content.Context;
import android.content.Intent;

import android.widget.Button;
import android.view.View;
import android.view.View.OnClickListener;

public class Activity1 extends Activity {

Button Button1;
Button Button2;
Button Button3;
Button Button4;
Button Button5;
Button Button6;



public void addListenerOnButton() {

final Context context = this;

Button1 = (Button) findViewById(R.id.autobody);

Button1.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View arg0) {

        Intent intent = new Intent(context, Activity2.class);
        startActivity(intent);   

    }

});

Button2 = (Button) findViewById(R.id.glass);

Button2.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View arg0) {

        Intent intent = new Intent(context, Activity2.class);
        startActivity(intent);   

    }

});

Button3 = (Button) findViewById(R.id.wheels);

Button3.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View arg0) {

        Intent intent = new Intent(context, Activity2.class);
        startActivity(intent);   

    }

});

Button4 = (Button) findViewById(R.id.speedy);

Button4.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View arg0) {

        Intent intent = new Intent(context, Activity2.class);
        startActivity(intent);   

    }

});

Button5 = (Button) findViewById(R.id.sevan);

Button5.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View arg0) {

        Intent intent = new Intent(context, Activity2.class);
        startActivity(intent);   

    }

});

Button6 = (Button) findViewById(R.id.towing);

Button6.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {

    Intent intent = new Intent(context, Activity2.class);
    startActivity(intent);   

}

});

}}

这是我的另一个java文件

activity2.java
包 install.fineline;

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

public class Activity2 extends Activity {

Button button1;

public void onCreate1(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.autobody);
}
Button button2;

public void onCreate2(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.glass);
}
Button button3;

public void onCreate3(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.wheels);
}
Button button4;

public void onCreate4(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.speedy);
}
Button button5;

public void onCreate5(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sevan);
}

Button button6;

public void onCreate6(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.towing);
}}
4

6 回答 6

1

您应该为每个页面定义一个活动。所以总共有7个活动,包括主要的。在主要活动中,定义单个 onClickListener 来处理所有点击。

class ClickListener implements View.OnClickListener {
    void onClick(View v) {
       switch(v.getId()) {
        case R.id.btn_1:
             ...
             break;
        ...
       }
    }

将此侦听器设置为所有 6 个按钮。

于 2012-11-20T17:30:11.630 回答
0

你肯定做错了。您的所有按钮都在调用相同的活动。如果您希望他们去不同的地方,请创建不同的活动。如果您希望他们使用不同的数据去同一个地方,请使用意图将信息作为额外信息发送。

此外,为了便于阅读,您可能想了解 XML 定义的点击方法。

于 2012-11-20T17:28:13.970 回答
0
  1. 使用单个 switch-case 更改您的 OnClick 方法
  2. 像这样从activity1传递数据:

    intent.putExtra("buttonClick", buttonnumber); 开始活动(意图);

  3. 像这样接收activity2中的数据:

    clickedButton = getIntent().getExtras().getString("buttonClick");

  4. 在activity2中将方法名改为OnCreate

于 2012-11-20T17:36:45.863 回答
0

好的,首先,实现 OnClickListener,你必须添加未实现的方法onClick()

public class Activity1 extends Activity implements OnClickListener {

然后初始化您的按钮并在您的onCreate()

Button1 = (Button) findViewById(R.id.autobody);
Button1.setOnClickListener(this);

然后在onClick()设置一个开关/外壳

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub
    switch (v.getId()) {
    case R.id.autobody:
        // do code
        break;
    case R.id.glass:
        // do code
        break;
    }
}

我只是做了一些你的按钮,但你可以弄清楚其余的。只需确保初始化并将 onClickListeners 添加到它们中onCreate()

于 2012-11-20T17:32:27.227 回答
0

不要将按钮用于此功能。使用ListView并使用它的 onItemClickListener,您将获得被点击的行号。然后,您可以使用ViewPager根据点击显示页面。

于 2012-11-20T17:34:56.850 回答
0

首先,这不是您的问题,而是使代码更易于阅读并节省内存:制作一个 onClickListener 并在其中检查单击了哪个按钮。

class Activity1 extends Activity implements onClickListener {

    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.button1:
            // handle button1 press
        case R.id.button2:
            // ...
        }
    }
}

现在解决真正的问题:在您的第二个活动中,Android 不知道任何 onCreate1()、onCreate2() 等函数。相反,您必须实现 onCreate() (Android 确实知道),并将 Intent 中按下的按钮发送给它,如下所示:

// You can just take your activity object as the context, 
// no need to convert explicitly.
Intent i = new Intent(this, Activity2.class);
i.putExtra("button", 1);
startActivity(i);

然后在您的活动中获取数据:

public void onCreate() {
    int button = getIntent.getIntent().getInt("button");
}
于 2012-11-20T17:35:35.893 回答