将数据保存到不同的活动上

在我的应用程序的主屏幕上,我希望有各种各样的TextViews,它们初始时只保存数据的“...”,直到用户输入他的数据。

用户输入不同活动中的数据,该数据在单击包含所有“...”值的CardView时打开。

我经常得到NullPointerException

02-26 16:14:33.106 26275-26275/hr.app.liftme.liftmehr E/AndroidRuntime: FATAL EXCEPTION: main
                                                                        Process: hr.app.liftme.liftmehr, PID: 26275


java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
                                                                        at hr.app.liftme.liftmehr.StatistikeInputMain$1.onClick(StatistikeInputMain.java:54)
                                                                        at android.view.View.performClick(View.java:4856)
                                                                        at android.view.View$PerformClick.run(View.java:19956)
                                                                        at android.os.Handler.handleCallback(Handler.java:739)
                                                                        at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                        at android.os.Looper.loop(Looper.java:211)
                                                                        at android.app.ActivityThread.main(ActivityThread.java:5389)
                                                                        at java.lang.reflect.Method.invoke(Native Method)
                                                                        at java.lang.reflect.Method.invoke(Method.java:372)
                                                                        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1020)
                                                                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:815)

这是我的java文件

public class StatistikeInputMain extends AppCompatActivity {
    RadioGroup radioGrupa;
    RadioButton imperial, metric;
    EditText visinaCM, visinaFT, visinaINC, tezina, bodyfat, tdee;
    Spinner kolikoDugoTrenirate, cilj;
    TextView rezultatTDEE;
    Button spremiRezultat;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_statistike_input_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        radioGrupa = (RadioGroup) findViewById(R.id.radioGrupaStatistike);
        imperial = (RadioButton) findViewById(R.id.radioStatistikeImperial);
        metric = (RadioButton) findViewById(R.id.radioStatistikeMetric);
        visinaCM = (EditText) findViewById(R.id.editTextStatistikeVisinaCM);
        visinaFT = (EditText) findViewById(R.id.editTextStatistikeVisinaFEET);
        visinaINC = (EditText) findViewById(R.id.editTextStatistikeVisinaINCH);
        tezina = (EditText) findViewById(R.id.editTextStatistikeTezina);
        bodyfat = (EditText) findViewById(R.id.editTextStatistikeBF);
        tdee = (EditText) findViewById(R.id.editTextStatistikeTDEE);
        kolikoDugoTrenirate = (Spinner) findViewById(R.id.spinnerStatistikeKolikoDugoTrenirate);
        cilj = (Spinner) findViewById(R.id.spinnerStatistikeCilj);
        spremiRezultat = (Button) findViewById(R.id.buttonStatistikeSpremi);
        rezultatTDEE = (TextView) findViewById(R.id.textViewStatistikeRezultatTDEE);


        spremiRezultat.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                double unosTDEE = Double.parseDouble(tdee.getText().toString());


                double rezultatTDEEInput = 0;
                rezultatTDEE.setText(Double.toString(rezultatTDEEInput));
            }
        });

    }



}

请注意,此行发生错误

  rezultatTDEE.setText(Double.toString(rezultatTDEEInput));

我希望将数据保存在此文本视图中

 <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="..."
                        android:id="@+id/textViewStatistikeRezultatTDEE"
                        android:textSize="14sp" />

这是初始化和铸造在Java文件..

另一个注意事项 - 按下按钮时会保存数据!

我在这里错过了什么?

编辑

  • 活动

    spremiRezultat.setOnClickListener(new View.OnClickListener(){@Override public void onClick(View v){Intent intent = new Intent(getApplicationContext(),AppLayoutMain.class); intent.putExtra(“tdeeInput”,tdee.getText()。 toString()); startActivity(intent);

  • 活动

    Intent intent = getIntent(); String tdee = intent.getStringExtra(“tdeeInput”);

  • 我这样做,只是它不会给出错误,按钮工作正常,但它仍然不显示结果


    rezultatTDEE为空,这就是错误发生的原因。 它是否存在于id为R.id.textViewStatistikeRezultatTDEE的activity_statistike_input_main布局中?


    如果textViewStatistikeRezultatTDEE不在activity_statistike_input_main布局中,那么正常情况下会出现NullPointerException。 因为findViewById试图在当前布局中查找视图。 因此,如果您的TextView处于不同的活动中,则必须通过Intent传递数据

    怎么样 ? 简单:按照这个

    这是Android开发的基础。 你真的必须知道这一点。 这是关于Android编程的所有书/ tuto


    rezultatTDEE为空,因为您在R.layout.activity_statistike_input_main没有R.id.textViewStatistikeRezultatTDEE

    您在评论中提到您要在其他活动中设置文字。 这意味着您需要使用Extra来将字符串传递给新的活动。 例如:

    Intent intent = new Intent(this, OtherActivity.class);
    intent .putExtra("string", rezultatTDEEInput);
    startActivity(intent); 
    

    然后在OtherActivity中执行:

    Intent intent = getIntent();
    String string = intent.getExtras().getString("string");
    

    然后你可以做textView.setText(string)

    链接地址: http://www.djcxy.com/p/67909.html

    上一篇: Saving data to TextView on different activity

    下一篇: HashMap cannot cast other type?