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);
}}
答案 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()
答案 3 :(得分:0)
答案 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)
从activity1传递数据,如下所示:
intent.putExtra(“buttonClick”,buttonnumber); startActivity(意图);
接收活动2中的数据,如下所示:
clickedButton = getIntent()。getExtras()。getString(“buttonClick”);
在activity2