如图报错
贴上代码
package com.example.a86187.myapplication; import android.annotation.SuppressLint; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Button; import android.widget.ImageView; import android.widget.TextView; /** * Created by 86187 on 2021/5/27. */ public class ResultActivity extends AppCompatActivity { TextView txt_result,txt_result1; Button btn; Intent intent = getIntent(); @SuppressLint("SetTextI18n") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.result); txt_result = (TextView)findViewById(R.id.txt_result); txt_result1 = (TextView)findViewById(R.id.txt_result1); btn = (Button)findViewById(R.id.button); //不服,再测一次 btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent i = new Intent(ResultActivity.this,TestActivity.class); startActivity(i); } }); //接收身高体重 double hei = intent.getDoubleExtra("heiNum", 0.0);//身高 double wei = intent.getDoubleExtra("weiNum", 0.0);//体重 //传递BMI的数值进行判断 double Bmi = intent.getDoubleExtra("bmiValue", 0.0);//接收bmi值 String sex = intent.getStringExtra("bmisex");//接收性别 String advice = ""; if (Bmi <= 18.4) { advice = getString(R.string.thin); } else if (Bmi >= 18.5 && Bmi <= 23.9) { advice = getString(R.string.slim); } else if (Bmi >= 24 && Bmi <= 27.9) { advice = getString(R.string.fat); } else if (Bmi >= 28 && Bmi <= 39) { advice = getString(R.string.fater); } else if (Bmi >= 40) { advice = getString(R.string.fatest); } txt_result.setText(sex + ",您的BMI值是:" + Bmi + "," + advice); txt_result1.setText("您的身高:" + hei + "cm" + "\n您的体重:" + wei + "kg" + "\n测试结果如下"); setTitle("测试结果"); } }
把
Intent intent = getIntent();
移到 onCreate() 方法里面就可以了:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.result);
Intent intent = getIntent();
// omitted
}
首先你要理解,
Intent intent = getIntent();这句话的意思,也就是当你生成一个
Activity的时候,就会初始化立马一个intent对象,而这时候调用getIntent,获取到的对象是一个空的,因为Activity的生命周期都还未开始,因为要在Activity相应周期
调用之后再调用getIntent();而实际上,你没必要写Intent intent = getIntent()这句话,可以直接在onCreate以及其他生命周期需要的地方调用
getIntent(),比如 double hei = getIntent().getDoubleExtra("heiNum", 0.0) ,