ارتباط بین Activity ها و تشخیص مقدار خالی
سلام و خسته نباشید
من بجای استفاده از 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");
}
یک سوال متفرقه : ایا کاربران سایت قادر به حذف تاپیک هایی که خودشان ایجاد کرده اند هستند ؟


داداش extras که null نمیشه
اگه درست یادم باشه شما میتونید با کدی مثل زیر شرطو چک کنید:
اصلاحیه! :
if (extras.getInt("AGE") != 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 !"); }
این کار های شما من را وادار میکنه که به سوالاتی که به دلیل کم توجهی به آموزش هست ، کمتر توجه کنم :|
به هر حال کد بالا هم قطعی نیست و بدون تست نوشته شد / موفق باشید

if (userInput != null && yearOld != 0) {
txtGet.setText(userInput + " " + yearOld + " ");
} else {
txtGet.setText("enter required data");
}
با این تغییر در اکتیویتی دوم مشکلم حل شد.

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