Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Can';在android中不接受全局变量_Java_Android_Android Intent_Android Fragments_Android Activity - Fatal编程技术网

Java Can';在android中不接受全局变量

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

当用户单击按钮时,年龄为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 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,因为:

  • 这是java中未分配双精度的默认值(
    double age;//age=0.0
  • onCreate()
    方法在活动“启动”(在您可以单击按钮之前)后立即运行,因此log语句将始终打印您将年龄变量初始化为的任何值(在本例中为0.0)
  • 将此代码放在onClick()中:


    因为在调用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
     }