android studio报错求解决

如图报错

贴上代码

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)  ,