0

我对 Android 开发和 Java 非常陌生。已阅读,但我在这个问题上没有任何进展。

我有一个按钮,单击该按钮应将变量 A 的值设置为“已购买项目”。但是,我只获得在类中首次定义变量时使用的值。

对于那些像我一样学习这方面的人 - 这个主题有望为那些刚开始学习的人提供很好的参考。

代码是:

public class shopView extends Activity
{

    String temp = "temp";

    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.shopview);


        Button btnRef1 = (Button) findViewById(R.id.btnbtnRef11);
        final TextView ConfirmPurchasetest = (TextView) findViewById(R.id.tvMigName);

        btnRef1.setOnClickListener(new View.OnClickListener()
        {   
            @Override
            public void onClick(View v) {
                temp = "passed value";
                ConfirmPurchasetest.setText("item Purchased");
                buyFromShop();
                Log.v("after button push", "temp");
                };
        });

    }
    public String buyFromShop(){
        Log.v("button push", "after buy from shop");
        Log.v("temp variable",temp);
        return temp;
    }

}

并使用以下方法调用:

shopcheckout = shop.buyFromShop();

Log.v("Value in myView",shopcheckout);

预期:shopcheckout = “购买的商品” 实际:shopcheckout = “temp”

再次感谢任何答案。会积极关注这个帖子。

4

2 回答 2

0

这正如预期的那样。你只打电话buyFromShop。该函数仅记录两条消息并返回temp。没有理由将 的值temp从其初始化值(即 )更改temp

只有在您正确创建活动(使用startActivity)并单击该活动和您对 的调用之间的按钮后buyFromShop,您才会看到temp. 在活动开始之前,按钮根本什么都不做。

于 2012-06-25T22:28:23.870 回答
0

除非您单击 Button btnRef1,否则 buyFromShop() 将始终返回“temp”。

如果您在 onCreate() 中添加此代码:

temp = "Changing the string.";

现在 buyFromShop() 将返回“更改字符串。”。

如果您希望 buyFromShop() 返回 的值ConfirmPurchasedtest,请将您的代码更改为:

public class shopView extends Activity
{
    TextView confirmPurchaseTest;
    String temp = "temp";

    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.shopview);

        Button btnRef1 = (Button) findViewById(R.id.btnbtnRef11);
        confirmPurchaseTest = (TextView) findViewById(R.id.tvMigName);

        btnRef1.setOnClickListener(new View.OnClickListener()
        {   
            @Override
            public void onClick(View v) {
                temp = "passed value";
                confirmPurchaseTest.setText("item Purchased");
                buyFromShop();
                Log.v("after button push", "temp");
            }
        });
    }

    public String buyFromShop(){
        Log.v("button push", "after buy from shop");
        Log.v("temp variable", temp);

        // Change this!
        return confirmPurchaseTest.getText().toString();
    }

}

同样根据命名约定,类名 likeshopView应该每个单词的第一个字母大写;所以ShopView。像这样的变量ConfirmPurchasetest应该以小写开头,然后将每个单词大写(在第一个之后),所以confirmPurchaseTest.

希望有帮助!

于 2012-06-25T22:38:56.287 回答