Android 如何设置其他活动的图像';s弦
我正在尝试从另一个活动的字符串设置图像 我的主要活动的字符串Android 如何设置其他活动的图像';s弦,android,Android,我正在尝试从另一个活动的字符串设置图像 我的主要活动的字符串 公共静态字符串imagee;//--这超出了onCreate的范围 capeMod.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { MainActivity.imagee = "drawable/pc"; Intent intent = new I
公共静态字符串imagee;//--这超出了onCreate的范围
capeMod.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0)
{
MainActivity.imagee = "drawable/pc";
Intent intent = new Intent(context, ModActivity.class);
startActivity(intent);
}
});
关于另一项活动:(是的,这是完全错误的。)
String imagee=MainActivity.imagee代码>
private void showImage() {
// int imageResource = R.drawable.icon;
int imageResource = getResources().getIdentifier(imagee, null, getPackageName());
Drawable imagee = getResources().getDrawable(imageResource);
image.setImageDrawable(image);
}
我可以从另一个活动的字符串设置TextView,但无法设置ImageView。如何解决此问题?您可以使用Intent.putExtra()
发送数据以及字符串,在其他活动中使用Intent.getExtras()
接收数据。阅读更多有一种方法可以做到这一点。您需要将变量名放置为
imagee = "pc"; //inside drawable folder.
int resourceId = Activity.getResources().getIdentifier(imagee , "drawable", "your.package.name"); // package name can get by code also.
Drawable imagee = getResources().getDrawable(imageResource);
image.setImageDrawable(image);
试试这段代码吧。我建议不要使用字符串,而是直接使用id(int)
主要活动:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout1);
Button capeMod = (Button)findViewById(R.id.capemod);
capeMod.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
Intent intent = new Intent(MainActivity.this, ModActivity.class);
intent.putExtra(ModActivity.EXTRA_DRAWABLE_ID, R.drawable.pc);
startActivity(intent);
}
}
}
}
活动:
public class ModActivity extends Activity {
public static final String EXTRA_DRAWABLE_ID = "drawableId";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.myLayout2);
Bundle bundle = getIntent().getExtras();
int drawableId = bundle.getInt(EXTRA_DRAWABLE_ID);
ImageView imageView = (ImageView)findViewById(R.id.myImageView);
imageView.setImageResource(drawableId);
}
}
您应该使用如下内容:
假设您可以像访问静态字符串一样访问字符串值,请使用以下资源:
Resources res = getResources();
String imageName= MainActivity.imagee;
int resID = res.getIdentifier(imageName, "drawable", getPackageName());
Drawable drawable = res.getDrawable(resID );
image.setImageDrawable(drawable);
编辑:即使有效,访问值的正确方式也不是通过静态方式,最好是通过Intents和PUTETRA:)它真的需要是字符串吗?或者一个整数可以吗?不,不,不需要整数。可以更改其他活动的代码。我想我找到了错误的代码。@PierGiorgioMisley它工作了,但使用静态
变量在活动之间传输数据是不正确的。因为当活动被破坏时,静态变量将不可用。你应该使用Intent
来实现这一点。@icetea先生哦,是的,你是对的,我写这段代码是因为他只要求设置图像的方法,。我甚至不知道可以使用static访问其他活动,我在web上找到了它:P无论如何,我将添加一条注释,这条注释最好使用elsway;)