آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

مشکل بد  NULLPointerEXeption(حل شد)

Delna  11 سال پیش  11 سال پیش
0 0

سلام دوستان.برنامه من سه تا اکتیویتی داره.تو اکتیویتی اول یه دکمه هست که میره اکتیویتی دوم که اسمش 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);

}
}

0 0
میخواید همین که به اکتیویتی دوم رفت اطلاعات به اکتیویتی سوم ارسال شه؟ برا اینکار میتونید توی کلاس G متغیر تعریف کنید همین که روی btn_go کلیک شد، مقادیر (متن یا عدد وارد شده ) رو بگیرید و توش بریزید. و بعد توی اکتیویتی سوم از اون متغیر استفاده کنید. (11 سال پیش)
0 0
بله.دقیقا میخوام همینکارو بکنم.میشه یکم بیشتر توضیح بدید.من الان کدوم کدارو رو بزنم تو G؟ (11 سال پیش)
+2 0
مشکل اینه که کلید (key) تبادل اطلاعت تو کلاسا با هم فرق داره، از نظر بزرگ و کوچیک بودن حروف و جاوا هم به مورد حساسه. (11 سال پیش)
 برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال 
hosseinAmini  11 سال پیش
0 0

این خطوط رو پاک کنید

  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 استفاده کنید.
این روشی که من به ذهنم رسید

0 0
خیلی ممنون دوست عزیز.میشه راجع به قراردادن تو کلاس G بیشتر راهنماییم کنید.مثلا باید اون دوتا ادیت تکست و دکمه توی کلاس G دوباره معرفی بشن.باید تو MAIN اینتنت به کلاس G بدم؟ ممنون میشم کدشو برام بنویسید. (11 سال پیش)
0 0
شما مشکل رو به نحوی که sprit گفت برسی کردید؟ (11 سال پیش)
0 0
روشی که اسپریت گفت رو انجام بدید، این روش توی خیلی از شرایط (مثلا زمانی که از فرگمنت ها استفاده میکنید) کار نمیکنه، و البته اصولی نیست. (11 سال پیش)
0 0
روش آقای اسپیریت انجام دادم ولی نشد.درضمن آقای امینی من این خط کدی که در بالا نوشتید تست کردم و به جاش متغیرها و EDITTEXT خودم گذاشتم ولی از اون که شما نوشتید EDITTEXT و مال من edtWeight هست خطا میگیره که میگه اینو نمیشناسم. باید چطور اینو به کلاس G معرفی کنم؟ (11 سال پیش)
پاسخ به سوال 
Hajhosseini  11 سال پیش
+1 0

چند تا کار انجام بدید همین کدی که نوشتید درست کار میکنه
اول: 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 برید!

0 0
تمام کارایی که گفتین قبلا انجام دادم .درضمن من به این خاطر دارم mine رو اجرا میکنم چون میخوام با کلیک روی دکمه برم به اکتیویتی دوم که اسمش Choose هست و همزمان مقادیر EditText رو بفرستم به اکتیویتی سوم که propofol هست.اگرمن intent اجرا کنم دیگه چطوری برم به اکتیویتی دوم.این روش مثل استاد که هم مقصد کلیک و هم ارسال فایل یکیه رو انجام دادم یا به قول شما intent رو اجرا کردم که درست کار کرد ولی ارسال به اکتیویتی سوم رو نمیدونم چطور انجام بدم؟ (11 سال پیش)
0 0
اول این که این کار از پایه درست نیست، دوم این که شما اصلا دسترسی این کار رو ندارید، تا چیزی ساخته نشده که نمیشه بهش مقدار داد! LifeCycle مربوط به Activity ها رو مطالعه کنید. سوم این که تا زمانی که اکتیویتی ساخته نشده و کاربر نمیبینتش، چه نیازی هست مقادیری بهش ارسال بشه؟ شما باید در اکتیویتی دوم مقادیر رو دریافت کنید و سپس زمانی که میخواید به اکتیویتی سوم برید مقادیر رو به اون اکتیویتی ارسال کنید. (11 سال پیش)
0 0
خیلی ممنون. با فراخوانی از کلاس G مشکلم حل شد. (11 سال پیش)
+1 0
با این که روشتون درست نیست (از نظر شخص بنده) ولی به پاسخ رسیدید، لطفا در ادامه تیتر سوال یک حل شده اضافه کنید. (11 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .