我设置了2个活动 - 一个和两个。
对于活动1,我有一个EditText
和一个按钮。当用户打开应用程序时,它将显示Activity One(就像屏幕截图一样)以提示用户键入数字。例如,1或2.
我要做的是:我想在活动2中显示ImageView
,当EditText
中的数字中的用户密钥点击活动1中的按钮后。
1.png
2.png
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
答案 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;
}