Java Can';在android中不接受全局变量
当用户单击按钮时,年龄为50岁。之后,当使用nfc发送数据时,age的值为0.0。救命啊!我怎样才能解决它Java Can';在android中不接受全局变量,java,android,android-intent,android-fragments,android-activity,Java,Android,Android Intent,Android Fragments,Android Activity,当用户单击按钮时,年龄为50岁。之后,当使用nfc发送数据时,age的值为0.0。救命啊!我怎样才能解决它 public class MainActivity extends Activity{ String mone; InputStream is =null; double age; double app=50.00,water=60.88,ban=35.55; boolean app_b=true, water_b=true, ban_b=true; private ViewFlipp
public class MainActivity extends Activity{
String mone;
InputStream is =null;
double age;
double app=50.00,water=60.88,ban=35.55;
boolean app_b=true, water_b=true, ban_b=true;
private ViewFlipper viewFlipper;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewFlipper = (ViewFlipper) findViewById(R.id.viewflipper);
if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(getIntent().getAction())) {
Parcelable[] rawMsgs = getIntent().getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
NdefMessage msg = (NdefMessage) rawMsgs[0];
String te = new String(msg.getRecords()[0].getPayload());
mone=te;
Log.e("value 2 ","val"+age); //age is 0.0
}
}
public void onNewIntent(Intent intent) {
setIntent(intent);
}
public void onClick(View v) {
if (v.getId() == R.id.apple)
app_b=false;
else if (v.getId() == R.id.watermelon)
water_b=false;
else if (v.getId() == R.id.banana)
ban_b=false;
}
public void aniStart(){
// Next screen comes in from right.
viewFlipper.setInAnimation(this, R.anim.slide_in_from_right);
// Current screen goes out from left.
viewFlipper.setOutAnimation(this, R.anim.slide_out_to_left);
// Display previous screen.
viewFlipper.showPrevious();
}
public void submit(View v){
if(v.getId() == R.id.button && (!app_b || !water_b || !ban_b)){
if (!app_b)
age=app;
else if (!water_b)
age=water;
else if (!ban_b)
age=ban;
aniStart();
Log.e("Value","age:"+age); //age=50;
}
else {
Toast.makeText(getApplicationContext(),"please select your fruit",Toast.LENGTH_LONG).show();
}
}
}
为什么年龄是0.0
更新:
此应用程序实际上是通过NFC从另一部手机接收数据。在点击手机之前,我点击按钮,得到50的值。之后,我从另一部手机接收数据,并将字符串值保留在“te”中。uhm
onCreate
首先被调用,而age没有指定值 当前,当单击按钮时,您的变量将得到更新,但如果您想在检查意图时为年龄分配一个值,则可以在该意图中使用putExtra(字符串键,双精度值)传递启动此活动的意图中的双精度值。年龄显示为0.0,因为:
double age;//age=0.0
)onCreate()
方法在活动“启动”(在您可以单击按钮之前)后立即运行,因此log语句将始终打印您将年龄变量初始化为的任何值(在本例中为0.0)因为在调用log语句之前,您从未给过它另一个值。在onClick被触发后,如何更新age的值。提前感谢。K单击后该值更改为50。当我通过NFC发送数据时,年龄是0.0。有什么问题吗?用
onClick
方法发送?Oncreate方法不会在我的活动启动时立即运行log语句。当我通过NFC发送时,“IF”语句中的Log.e被触发。try it public static double age=0.0;当你调用提交函数时?它只是一个按钮。我点击“r.id.apple”,然后点击提交按钮,年龄值应该是50岁。之后,我从NFC收到一个字符串值,并将其保存在“te”变量中。您能给我举个例子吗?我对Android很陌生。@joigu如果这就是你想要做的(在点击nfc代码按钮后),那么我建议你将该块从onCreate()移动到onResume(),你可以使用布尔值来控制行为,也就是说,只有调用了onClick(),你的nfc块才会运行
if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(getIntent().getAction())) {
Log.e("nfc","insidenfc"+age); //age is 0.0
}