使用onclick监听器进行Android按钮导航

时间:2012-11-20 17:17:53

标签: java android navigation

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听众时,我已经尝试了一切无济于事。我可以让一个听众工作但是当我试图获得不止一个时它会搞砸,我无法理解它。 我目前的方法是使用这两个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 =(按钮)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
    package 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);
}}

6 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

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

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

答案 2 :(得分: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;
    }
}

我刚刚做了一些按钮,但你可以弄清楚其余的按钮。只需确保在onCreate()

中初始化并将onClickListeners添加到它们中

答案 3 :(得分:0)

请勿使用按钮来实现此功能。使用ListView并使用onItemClickListener,您将获得所单击行的编号。然后,您可以使用ViewPager根据点击显示网页。

答案 4 :(得分: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");
}

答案 5 :(得分:0)

  1. 使用单个switch-case
  2. 更改OnClick方法
  3. 从activity1传递数据,如下所示:

    intent.putExtra(“buttonClick”,buttonnumber); startActivity(意图);

  4. 接收活动2中的数据,如下所示:

    clickedButton = getIntent()。getExtras()。getString(“buttonClick”);

  5. 在activity2

  6. 中将方法名称更改为OnCreate