带有点击监听器的安卓按钮导航


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
-------------------------------------------

单击按钮时,它会转到相应的页面。实现此目的的最佳/最简单的方法是什么?当我尝试点击侦听器时,我已经尝试了一切无济于事。我可以让一个听众工作,但是当我试图得到多个听众时,它会搞砸,我无法弄清楚。我目前的方法是使用这两个java文件
活动1.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 文件

活动2.java
包安装细线;

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

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

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

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

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

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

好的,首先,实现 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()

不要使用按钮来实现此功能。使用列表视图,并使用其onItemClickListener,您将获得单击的行的编号。然后,您可以使用 ViewPager 根据点击显示页面。

首先,这不是你的问题,但使代码方式更易于阅读并保留内存: 创建一个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");
}
  1. 使用单个开关盒更改 OnClick 方法
  2. 从活动 1 传递数据,如下所示:

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

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

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

  4. 在活动 2 中将方法名称更改为创建

最新更新