如何在android中将值从一个页面静态传递到另一个页面?

时间:2012-02-10 04:44:56

标签: android

在我的项目中,我为类别保留了不同的图片。当我点击每个类别图片时,我将类别ID 传递给其他页面静态并设置可绘制图片 新页面中的该类别。

我的代码:

Firstpage.java

public static String categoryid;

category1.setOnClickListener(new View.OnClickListener()
{
   public void onClick(View view)
    {
     categoryid="0";
     Intent myIntent = new Intent(view.getContext(),Nextpage.class);
     startActivityForResult(myIntent, 0);
    }
});
category2.setOnClickListener(new View.OnClickListener()
{
   public void onClick(View view)
   {
    categoryid="1";
    Intent myIntent = new Intent(view.getContext(),Nextpage.class);
    startActivityForResult(myIntent, 0);
   }
});
category3.setOnClickListener(new View.OnClickListener()
{
   public void onClick(View view)
   {
    categoryid="2";
    Intent myIntent = new Intent(view.getContext(),Nextpage.class);
    startActivityForResult(myIntent, 0);
   }
});

Nextpage.java

public static String catid = Firstpage.categoryid;
          ImageView categorytype=(ImageView)findViewById(R.id.imageView1);

             if(catid=="0")
            { 
                categorytype.setBackgroundResource(R.drawable.image1);
            }

             else if(catid=="1")
            { 
                categorytype.setBackgroundResource(R.drawable.image2);
            }
           else  if(catid=="2")
            {
                   categorytype.setBackgroundResource(R.drawable.image3);
            }

首次点击类别图片时,它会将类别ID 传递到下一页,并在下一页中设置该特定图片。之后我点击后退按钮(android后退按钮)并转到Firstpage.java并再次点击其他图像。但这次也存储了相同的图像。类别ID没有改变。类别ID不刷新...如何刷新类别ID?任何建议都会感激.......

3 个答案:

答案 0 :(得分:1)

您要通过==运算符比较两个字符串,而不是通过equals方法进行比较,请尝试以下操作:

if(catid.equals("0"))
            { 
                categorytype.setBackgroundResource(R.drawable.image1);
            }

             else if(catid.equals("1"))
            { 
                categorytype.setBackgroundResource(R.drawable.image2);
            }
           else  if(catid.equals(2"))
            {
                   categorytype.setBackgroundResource(R.drawable.image3);
            }

答案 1 :(得分:0)

我认为问题在于您使用此if(catid=="0")比较字符串值您应该使用if(catid.trim().equals("0"))

进行比较

在代码中更新此更改并进行检查。

答案 2 :(得分:0)

不要为此使用静态变量。通过意图将类别ID传递给Nextpage活动。在Firstpage.java中:

public static final String CATEGORY_KEY = "category";

category1.setOnClickListener(new View.OnClickListener()
{
   public void onClick(View view)
    {
     Intent myIntent = new Intent(this,Nextpage.class);
     myIntent.putExtra(CATEGORY_KEY, "0");
     startActivityForResult(myIntent, 0);
    }
});

然后在Nextpage.java的onCreate(Bundle)方法中检索它:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Intent intent = getIntent();
    String categoryid = intent.getStringExtra(Firstpage.CATEGORY_KEY);
    . . .
}

您的方法不起作用的原因是在加载类时初始化Nextpage.catid,但除非卸载类并且需要重新加载,否则不会再次执行赋值语句。