0

我想知道如何获取按钮的值,然后在另一个活动上使用它来相应地显示内容。

例子:

我的 MainActivity 上有 3 个按钮Image1Image2Image3

现在根据用户单击的按钮(Image1Image2Image3),在新活动上显示相应的图像。

我知道如何创建这些按钮、新活动以及如何在新活动上显示图像。如何根据用户单击的按钮显示图像?

4

7 回答 7

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");
        }
于 2013-04-11T07:08:33.390 回答
1

为什么不使用 aswitch 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
}

我假设您Bundle在 Intent 中传递了一个用于启动下一个 Activity。更改该代码以传递包含按下哪个按钮的信息。

例如: Intent showPhoto = new Intent(CurrentActivity.this, YOUR_SECOND_ACTIVITY.class); showPhoto.putExtra("BUTTON_CLICKED", "IMAGE1"); 开始活动(显示照片);

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

    }
}
于 2013-04-11T07:12:09.487 回答
1

我的 MainActivity 上有 3 个按钮 Image1、Image2 和 Image3。现在根据用户单击的按钮(Image1、Image2 和 Image3),在新活动上显示相应的图像。

=> 正如你已经说过的,你知道如何创建按钮并启动它。

现在您只需分配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);
于 2013-04-11T07:13:55.213 回答
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
        }
于 2013-04-11T07:24:17.683 回答
1

例如,您有 3Button秒并且ImageViewMain布局中:

主.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"
        />

我您的活动方法是 onClick 处理来自三个按钮的事件。我们需要识别按钮已被按下。

我的活动.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文件夹。希望它的帮助。

于 2013-04-11T07:17:04.477 回答
0

您只需ClickListener为每个按钮实现一个,这将启动相应的活动。请参阅此处的示例。

于 2013-04-11T07:08:01.503 回答
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();

}
于 2018-11-20T20:44:51.270 回答