مشکل بد NULLPointerEXeption(حل شد)
سلام دوستان.برنامه من سه تا اکتیویتی داره.تو اکتیویتی اول یه دکمه هست که میره اکتیویتی دوم که اسمش choose هست.براش intent گذاشتم که درست کار میکنه.میخام تو اکتیویتی اول دوتا متن یا عدد که وارد میشه ازش تو اکتیویتی سوم که اسمش propofolهست اجرا بشه.intent اونم گذاشتم ولی به محض اینکه میره اکتیویتی سوم کرش میکنه و از خط 19 propofol ارور nullpointexeptionمیگیره.هرکاری کردم درست نشد ممنون میشم یه نگا بهش بندازین.
این سورس اصلی:
package my.bk;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
public class Main extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final EditText edtWeight = (EditText) findViewById(R.id.edtWeight);
final EditText edtAge = (EditText) findViewById(R.id.edtAge);
Button btn_go = (Button) findViewById(R.id.btn_go);
btn_go.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
String user_age = edtAge.getText().toString();
String user_weight = edtWeight.getText().toString();
Intent mine = new Intent(Main.this, Choose.class);
Intent intent = new Intent(Main.this, Propofol.class);
intent.putExtra("USER_AGE", user_age);
intent.putExtra("USER_Weight", user_weight);
Main.this.startActivity(mine);
}
});
}
اینم سورس propofol:
package my.bk;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class Propofol extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.propofol);
TextView txt_r_ind = (TextView) findViewById(R.id.txt_r_ind);
TextView txt_r_infu = (TextView) findViewById(R.id.txt_r_infu);
Bundle extras = getIntent().getExtras();
String user_weight = extras.getString("USER_WEIGHT"); //از این خط خطا میگیره.
txt_r_infu.setText(user_weight);
txt_r_ind.setText(user_weight);
}
}
این خطوط رو پاک کنید
Intent intent = new Intent(Main.this, Propofol.class);
intent.putExtra("USER_AGE", user_age);
intent.putExtra("USER_Weight", user_weight);
جاش تو کلاس G یه متغیر بسازید (مثلا اسمش test هست)
حالا وقتی روی btn_go کلیک شد مقذار EditText رو بگیرید و بریزید توی متغیر test:
G.test = editText().getText().toString();
حالا تو اکتیویتی سوم می تونید از G.test استفاده کنید.
این روشی که من به ذهنم رسید
چند تا کار انجام بدید همین کدی که نوشتید درست کار میکنه
اول: btn_go رو final تعریف کنید
دوم: intent.putExtra("USER_Weight", user_weight); رو به intent.putExtra("USER_WEIGHT", user_weight); تغییر بدید
دلیل: key باید در 2 طرف یکسان باشه
سوم: مقداری که ارسال میکنید رو حتما چک کنید، با دیباگ کردن و یا اضافه کردن Log میتونید در هنگام ارسال دیتا چک کنید ببینید دیتا درست ارسال میشه یا نه، و زمانی که دیتا رو دریافت میکنید چک کنید ببینید دیتا رو درست دریافت کردید یا نه.
و در آخر نکته ای که شما دقت نکردید اینه که شما Main.this.startActivity(mine); رو دارید اجرا میکنید، شما باید Main.this.startActivity(intent رو اجرا کنید که به اکتیویتی Propofol برید!
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .