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

ارتباط بین Activity ها و تشخیص مقدار خالی

سینا  11 سال پیش  11 سال پیش
+2 0

 سلام و خسته نباشید

من بجای استفاده از if در اکتیویتی دوم از try-catch در اکتیویتی اول استفاده کردم.

 public class Activity1 extends Activity {

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.form1);

Button btnGoNext = (Button) findViewById(R.id.btnGoNext);
final EditText edtInput = (EditText) findViewById(R.id.edtInput);
final EditText edtAge = (EditText) findViewById(R.id.edtAge);

btnGoNext.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {

String input = "";
int age = 0;
try {
input = edtInput.getText().toString();
age = Integer.parseInt(edtAge.getText().toString());
}
catch (Exception e) {
e.printStackTrace();
}

Intent intent = new Intent(Activity1.this, Activity2.class);

intent.putExtra("USER_INPUT", input);
intent.putExtra("AGE", age);

Activity1.this.startActivity(intent);
Activity1.this.finish();// close activity one

}
});

}
}

public class Activity2 extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.form2);

Button btnClose = (Button) findViewById(R.id.btnClose);
TextView txtGet = (TextView) findViewById(R.id.txtGet);

Bundle extras = getIntent().getExtras();

String userInput = extras.getString("USER_INPUT");
int yearOld = extras.getInt("AGE");


txtGet.setText(userInput + " " + yearOld +);


btnClose.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
Activity2.this.finish();

}
});

}
}

با استفاده از این کد در صورتی که در هر دو plain text مقداری رو وارد نکنم صفحه نمایش مربوط به اکتیویتی دوم به این شکل خواهد بود.

( وقتی که  مثل ویدیو ها از try-catch استفاده نکردم  با وارد نکردن مقدار در plain text نرم افزار کرش کرد.)

سوالی که برای من مطرح شده این است که از چه راهی بجای دیده شدن مقدار صفر (۰) روی صفحه نمایش عبارت مناسبی مثل enter required data دیده شود  ؟

سعی کردم با ایجاد تغییر در اکتیویتی دوم و  استفاده از if-else این کارو انجام بدم که بی فایده بود.

  if (extras != null) {
String userInput = extras.getString("USER_INPUT");
int yearOld = extras.getInt("AGE");

txtGet.setText(userInput + " " + yearOld + " ");
} else {
txtGet.setText("enter required data");
}

یک سوال متفرقه : ایا کاربران سایت قادر به حذف تاپیک هایی که خودشان ایجاد کرده اند هستند ؟

0 0
اگر مقدار تکت ویو صفر بود ، تغیرش بده خو ! (11 سال پیش)
 برای این سوال 4 پاسخ وجود دارد.
پاسخ به سوال 
sadeghbarout  11 سال پیش
0 0

داداش extras که null نمیشه

اگه درست یادم باشه شما میتونید با کدی مثل  زیر شرطو چک کنید:

اصلاحیه! :

  if (extras.getInt("AGE") != 0) {
}
0 0
خیر دستور صحیح extras.containkey هستش ! (11 سال پیش)
0 0
البته خود استاد هم extras != null رو گذاشتن ، کی گفته null نمیشه ، مثلا از اکتیویتی سومی وارد بشی ! (11 سال پیش)
0 0
دوست عزیز چرا میزنی؟ بله راه شما هم صحیحه! درضمن extras داره یه string دیگه هم میفرسته . چطور null بشه؟ اگه هیچی نمیفرستاد اونوقت null میشد (11 سال پیش)
0 0
اقا بحث مصالمت آمیزه ، این از بدی های تکستینگه که منظور بد میرسه ! ، در ضمن وقتی که یه اکتیویتی دیگه به جز اکتیویتی فعلی این اکتیویتی رو باز کنن هیچ اکترسی ارسال نمیشه و برنامه کرش میکنه و اون خط جلوی کرش رو میگیره :| ، ویدئو 1-5 رو دوباره ببنید ، 10 دقیقه آخر بحث همینه ، :) (11 سال پیش)
0 0
ok ;) (11 سال پیش)
0 0
کسی جواب سوال من رو نداد.منتظرم. (11 سال پیش)
پاسخ به سوال 
مجتبی یگانه  11 سال پیش
0 0

پاسخی مناسب و کاربردی : 

دوست عزیزم ، شما آموزش این بخش رو با دقت ، دوباره برسی کنید ، چون کامل متوجه نشدید !

به هیچ وجه نیازی به try کردن کد نیست ، چرا که استاد دستور دیگری را ذکر کردن ، دستور extras.containsKey ، یعنی اگر این کلید ارسال شده باشه ، در اون شرایط این کار رو بکن ، مثلا در مورد شما کدش شبیه به کد زیر خواهد بود !

if (extras != null && extras.containsKey("AGE")) {
    int age= extras.getInt("AGE");
    Log.i("negano", "" + age);         
} else { Log.w("negano", "no age was recived !"); }

این کار های شما من را وادار میکنه که به سوالاتی که به دلیل کم توجهی به آموزش هست ، کمتر توجه کنم :| 

به هر حال کد بالا هم قطعی نیست و بدون تست نوشته شد / موفق باشید 

0 0
مرسی از پاسخ خوب (11 سال پیش)
پاسخ به سوال 
سینا  11 سال پیش
0 0

 if (userInput != null && yearOld != 0) {
txtGet.setText(userInput + " " + yearOld + " ");
} else {
txtGet.setText("enter required data");
}

با این تغییر در اکتیویتی دوم مشکلم حل شد.

0 0
پاسخ قبلی مناسب است. (11 سال پیش)
پاسخ به سوال 
amirmojiry  11 سال پیش
0 0

من هم با همین مشکل روبرو شدم و با راه حل ارائه شده ی alu0075 مشکلم حل نشد!
مسئله در بی توجهی به آموزش نیست! در ویدئوی آموزشی (5-1) در مورد ارسال نشدن اطلاعات از یک اکتیویتی به دیگری به درستی و خوبی حرف زده می شود اما مشکل بررسی خالی بودن مقدار اطلاعات ارسالی همچنان باقی ست.

برای حل این مشکل، باید خالی بودن این مقدارها را حتمن در اکتیویتی مبدا یا اکتیویتی مقصد بررسی کنیم.

0 0
اینها مسائل خلاقیتی هستند ، شاید داده ی "" هم برای شما مفید باشه و هدف فقط null نبودن هست ، از این محکم کاری ها میشه انجام داد (11 سال پیش)
0 0
مسئله اینه که برنامه توی همون اکتیویتی مبدا (Activity1) با اشکال روبرو می شه و اصلن به اکتیویتی مقصد (Activity2) نمی رسه که حالا بخوایم اون جا null بودن رو بررسی کنیم. نمی دونم! شاید با ادامه دادن آموزش ها مشکلم حل بشه (من یه مبتدی ام!) اما الان که بعد از امتحان کردن راه های مختلف فقط همون راه try catch که سینا گفت، مشکلم رو حل کرد (11 سال پیش)

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