我想知道如何获取按钮的值,然后在另一个活动上使用它来相应地显示内容。
示例:
我有3个按钮 Image1 , Image2 &我的MainActivity上的 Image3 。
现在,根据用户点击的按钮(图片1 ,图片2 & 图片3 ),相应的图片会显示在新活动上
我知道如何创建这些按钮,新活动以及如何在新活动上显示图像。如何根据用户点击的按钮显示图像?
答案 0 :(得分:5)
您的类应该实现OnClickListener并覆盖onClick()
Button button1 = (Button) findViewById(R.id.button1);
Button button2 = (Button) findViewById(R.id.button2);
Button button3 = (Button) findViewById(R.id.button3);
button1.setOnClickListener(new OnClickListener(this));
button2.setOnClickListener(new OnClickListener(this));
button3.setOnClickListener(new OnClickListener(this));
@Override
public void onClick(View v){
switch(v.getId()) //get the id which is an int
{
case R.id.button1 : //if its button1 that is clicked
Intent i= new Intent("com.example.secondActivity");
i.puExtra("key",value);
startActivity(i);
// use intents to pass information to secondActivity and display the image there
break;
case R.id.button2 :
Intent i= new Intent("com.example.secondActivity");
startActivity(i)
//use intents to pass information to secondActivity and display the image there
break;
case R.id.button3 :
Intent i= new Intent("com.example.secondActivityy");
startActivity(i)
//use intents to pass information to secondActivity and display the image there
break;
}
}
使用意图传递值
点击按钮
Intent i= new Intent("com.example.secondActivity");
i.puExtra("key",value);
startActivity(i);
在第二个活动中检索它如下
Bundle extras = getIntent().getExtras();
if(extras!=null)
{
int values= extras.getInt("key");
}
答案 1 :(得分:1)
为什么不使用switch case
来确定用户点击了哪个按钮,并在下一个活动中显示相应/相关的图像?例如:
首先,让您的Activity实现OnClickListener
。然后,在onCreate()
中投射您的Buttons
并设置他们的setOnClickListener
@Override
public void onCreate(Bundle savedInstanceState) {
....
Button Image1 = (Button) findViewById(R.id.Image1);
Image1.setOnClickListener(this);
.... // THE REST OF THE BUTTONS
}
我假设您在Intent中传递Bundle
以启动下一个Activity。更改该代码以传递包含按下了哪个按钮的信息。
例如: Intent showPhoto = new Intent(CurrentActivity.this,YOUR_SECOND_ACTIVITY.class); showPhoto.putExtra(“BUTTON_CLICKED”,“IMAGE1”); startActivity(showPhoto);
@Override
public void onClick(View v) {
// Perform action on click
switch(v.getId()) {
case R.id.Image1:
// RUN THE CODE TO START THE NEXT ACTIVITY
Intent showPhoto = new Intent(CurrentActivity.this, YOUR_SECOND_ACTIVITY.class);
showPhoto.putExtra("BUTTON_CLICKED", "IMAGE1");
startActivity(showPhoto);
break;
case R.id.Image2:
// RUN THE CODE TO START THE NEXT ACTIVITY
Intent showPhoto = new Intent(CurrentActivity.this, YOUR_SECOND_ACTIVITY.class);
showPhoto.putExtra("BUTTON_CLICKED", "IMAGE2");
startActivity(showPhoto);
break;
case R.id.Image3:
// RUN THE CODE TO START THE NEXT ACTIVITY
Intent showPhoto = new Intent(CurrentActivity.this, YOUR_SECOND_ACTIVITY.class);
showPhoto.putExtra("BUTTON_CLICKED", "IMAGE3");
startActivity(showPhoto);
break;
}
}
}
答案 2 :(得分:1)
我有3个按钮Image1,Image2&我的MainActivity上的Image3。现在基础 用户点击的按钮(Image1,Image2& Image3),a 相应的图像显示在新活动上。
=>正如你已经说过的,你知道如何创建按钮并启动它。
现在您只需要为每个按钮分配OnClickListener
,然后将Image id或URL传递给您调用新活动的Intent。
检查上面@IceMAN发布的代码,正如我上面提到的,使用putExtra()方法将ImageURL或Image ID放入Intent。
例如:
Intent intent= new Intent(CurrentClass.this, ImageActivity.class);
intent.putExtra("ImageURL",strImageURL);
startActivity(i);
答案 3 :(得分:1)
例如,您在Button
布局中有3个ImageView
和Main
:
main.xml中
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/ll_main"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<Button
android:layout_width="100dp"
android:layout_height="50dp"
android:id="@+id/btn1"
android:text="button 1"
/>
<Button
android:layout_width="100dp"
android:layout_height="50dp"
android:id="@+id/btn2"
android:text="button 2"
/>
<Button
android:layout_width="100dp"
android:layout_height="50dp"
android:id="@+id/btn3"
android:text="button 3"
/>
<ImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:id="@+id/iv"
/>
我的活动metod onClick处理来自三个按钮的事件。我们需要认识到按钮已被按下。
MyActivity.java
public class MyActivity extends Activity implements View.OnClickListener {
Button btn1;
Button btn2;
Button btn3;
ImageView iv;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btn1 = (Button) findViewById(R.id.btn1);
btn2 = (Button) findViewById(R.id.btn1);
btn3 = (Button) findViewById(R.id.btn1);
iv = (ImageView) findViewById(R.id.iv);
btn1.setOnClickListener(this);
btn2.setOnClickListener(this);
btn2.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.btn1:
{
Toast toast = Toast.makeText(this, "onClickButton1", Toast.LENGTH_SHORT);
toast.show();
iv.setImageDrawable(R.drawable.my_image_1);
break;
}
case R.id.btn2:
{
Toast toast = Toast.makeText(this, "onClickButton2", Toast.LENGTH_SHORT);
toast.show();
iv.setImageDrawable(R.drawable.my_image_2);
break;
}
case R.id.btn3:
{
Toast toast = Toast.makeText(this, "onClickButton3", Toast.LENGTH_SHORT);
toast.show();
iv.setImageDrawable(R.drawable.my_image_3);
break;
}
}
}
}
来自my_image_1
文件夹的my_image_2
,my_image_3
,Drawable
- 图片。
希望能帮到你。
答案 4 :(得分:1)
在包含3个按钮
的活动的onCreate中添加此项 Button image1 = (Button) findViewById(R.id.image1);
image1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(getApplicationContext(), DisplayImagActivity.class)
.putExtra("ImageName", "Image1"));
}
});
Button image2 = (Button) findViewById(R.id.image2);
image2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(getApplicationContext(), DisplayImagActivity.class)
.putExtra("ImageName", "Image2"));
}
});
Button image3 = (Button) findViewById(R.id.image3);
image3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(getApplicationContext(), DisplayImagActivity.class)
.putExtra("ImageName", "Image3"));
}
});
在活动的onCreate中添加此项,您将在其中设置图像:
String imageName = getIntent().getStringExtra("ImageName");
if(imageName.equals("Image1")) {
//set image 1
}
else if(imageName.equals("Image2")) {
//set image 2
}
else if(imageName.equals("Image3")) {
//set image 3
}
答案 5 :(得分:0)
您只需为每个按钮实施一个ClickListener
即可启动相应的活动。查看示例here。
答案 6 :(得分:0)
我知道这是一个老问题,但是还有另一种方法,我更喜欢,因为您可以对所有按钮使用相同的默认方法。
首先向每个按钮添加标签。
<Button
android:id="@+id/imageOneButton"
android:tag="1"
android:onClick="chooseImage" />
然后使用此标记号来更改方法的行为。
public void chooseImage(View view) {
int imageNumber = Integer.parseInt(view.getTag().toString());
// I'll just send this tag number to a toast, but you can send it in your intent
// as an "Extra"
Toast.makeText(this, view.getTag().toString(), Toast.LENGTH_SHORT).show();
}