我是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”
再次感谢您的回答。将积极监督这篇文章。
答案 0 :(得分:0)
这是预期的。您只拨打buyFromShop
。该函数仅记录两条消息并返回temp
。没有理由认为temp
的值应该从其初始化值temp
更改。
只有在您正确创建活动后(使用startActivity
),然后点击该活动与您对buyFromShop
的通话之间的按钮,您才会看到temp
的更改。在活动开始之前,该按钮根本不做任何事情。
答案 1 :(得分:0)
除非您点击按钮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();
}
}
根据命名约定,像shopView
这样的类名应该使每个单词的首字母大写;所以ShopView
。像ConfirmPurchasetest
这样的变量应该以小写字母开头,然后将每个单词大写(在第一个单词之后),所以confirmPurchaseTest
。
希望有所帮助!