Android Studio onClick按钮可在另一项活动

时间:2016-07-13 04:32:43

标签: android imageview android-imageview

我设置了2个活动 - 一个和两个。

对于活动1,我有一个EditText和一个按钮。当用户打开应用程序时,它将显示Activity One(就像屏幕截图一样)以提示用户键入数字。例如,1或2.

我要做的是:我想在活动2中显示ImageView,当EditText中的数字中的用户密钥点击活动1中的按钮后。

  • 如果用户键入1,则会在活动2中显示1.png
  • 如果用户键入2,则会在活动2中显示2.png
  • 如果用户键入3,则会在活动2中显示3.png 等...

图片将从drawable文件夹中获取。

请参阅此屏幕截图

[![在此处输入图像说明] [1]] [1]

我可以将Intent的整数值从活动1传递给2,但我无法为ImageView 执行此操作。所以这意味着if else循环我已经完成ImageView不能显示。

 get_image.setBackgroundResource(R.drawable.1); //  here i can only key in 01 ( it will get image from Drawable folder 1.png). i cant put int value into it. 

或者我不应该使用get_image.setBackgroundResource ??有人可以帮忙吗?我在这里呆了一天......

提前谢谢!

请检查屏幕截图 - > http://i.stack.imgur.com/53vjy.jpg

5 个答案:

答案 0 :(得分:4)

你说你可以将活动1中的整数值传递给2,所以只需使用它来查找你的图像。

ImageView imageView = (ImageView)findViewById(R.id.yourImageViewId);
if(1 == yourValue) { 
//set 01.png 
} else {...}

我可能会错过一些事情,因为当你说出来时我无法理解"但是我无法为imageview"

做到这一点。

编辑:在你的附加代码之后。 因此,您必须使用资源文件名映射整数值。你不能把你的整数值放到get_image.setBackgroundResource(R.drawable.id)。 我认为在您的情况下,您应该使用一个数组,只需在Activity2中存储您需要int[] drawableIds = {R.drawable.01, R.drawable.02}的资源ID 然后像这样使用get_image.setBackgroundResource(drawableIds[yourIntegerValue-1])(当你使用这种方法时,你应该把索引从索引中删除)。

答案 1 :(得分:2)

尝试下面的解决方案代码,

对于活动一,在下面写下代码以重定向活动2

     Intent intent = new Intent(Activity1.this, Activity2.class);
      intent.putExtra("SelectedNumber", editText.getEditableText.toString());
      startActivity(intent);

现在在活动2中,在onCreate方法中编写以下代码

     int selectedNumber = 1;
      if(getIntent().getExtras() != null)
      {
          selectedNumber = getIntent().getExtras().getInt("SelectedNumber");
      }

      switch(selectedNumber)
       {
            case 1:  // set your 01.png Image
                     break;
            case 2:  // set your 02.png Image
                     break;

            // And so
       }

答案 2 :(得分:2)

尝试这种方式可能会对您有所帮助。

String mDrawableName = "1"; //editText.getText().toString();
int resID = getResources().getIdentifier(mDrawableName , "drawable", getPackageName());

然后使用Activity2,

 setImageResource(resID); 
(or)
 setImageDrawable(getResources().getDrawable(resID)); 

最后,

button.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {

    String mDrawableName = editText.getText().toString();
    int resID = getResources().getIdentifier(mDrawableName , "drawable", getPackageName());

    Intent ii=new Intent(Activity.this, Activity1.class);
    ii.putExtra("resId", resID);
    startActivity(ii);
}
});
  

活性2

公共类Activity2扩展了Activity {     私人ImageView img;

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.intent);
    img = (ImageView)findViewById(R.id.img);
    Intent iin= getIntent();
    Bundle b = iin.getExtras();

    if(b!=null)
    {
        int drawableId =(int) b.get("redId");
        img.setImageResource(drawableId); 
    }
  } 
}

答案 3 :(得分:1)

您可以在附加内容中传递资源值。试试这种方式。

EditText edit = (EditText) findViewById(R.id.yourEdittext);
Button btn = (Button) findViewById(R.id.yourButton);

btn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

                Intent i = new Intent(ActivityOne.this, ActivityTwo.class);

                if(edit.getText().toString().trim().equals("1")){
                    i.putExtra("image", R.drawable.01);
                    startActivity(i);
                }else if(edit.getText().toString().trim().equals("2")){
                    i.putExtra("image", R.drawable.02);
                    startActivity(i);
                }else{
                    Toast.makeText(getApplicationContext(), "Please Enter Valid Value.",
                    Toast.LENGTH_SHORT).show();
                }
            }
        });

并在 ActivityTwo.java

ImageView imageView = (ImageView)findViewById(R.id.yourImageViewId);
imageView.setImageResource(getIntent().getIntExtra("image",0));

快乐编码。

答案 4 :(得分:0)

在活动2中创建

get_image= (ImageView)findViewById(R.id.imageView);

然后使用switch case来表示来自intent的值

  switch(intentValues){
    case 1:
     get_images.setImageDrawable(getResources().getDrawable(R.drawable.1));
    break;
    case 2:
    get_images.setImageDrawable(getResources().getDrawable(R.drawable.2));
    break;
    }