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;)