پروژه رو یه بار کلین کنید ببینید فرقی میکنه!
بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ
خطا در رفتن به Activity دوم با مقدار خالی
مدیریت گفتگو
آخرین تغییر: 11 سال پیش
سلام..
چرا در صورت مقدار ندادن به edt ها وقتی از Activity اول به Activity دوم میرم خطای فورس کلوز میده؟؟
طبق آموزش بخش 05-01
public class FirstActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.form1);
Button btnGoNext = (Button) findViewById(R.id.btnGoNext);
final EditText edtUserInput = (EditText) findViewById(R.id.edtUserInput);
final EditText edtUserAge = (EditText) findViewById(R.id.edtUserAge);
btnGoNext.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
String userInput = edtUserInput.getText().toString();
int userAge = Integer.parseInt(edtUserAge.getText().toString());
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
intent.putExtra("USER_INPUT", userInput);
intent.putExtra("USER_AGE", userAge);
FirstActivity.this.startActivity(intent);
FirstActivity.this.finish();
}
});
}
}
public class SecondActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.form2);
TextView txtCaption = (TextView) findViewById(R.id.txtCaption);
Bundle extras = getIntent().getExtras();
if (extras != null) {
String userInput = "";
int userAge = 0;
if (extras.containsKey("USER_INPUT")) {
userInput = extras.getString("USER_INPUT");
}
if (extras.containsKey("USER_AGE")) {
userAge = extras.getInt("USER_AGE");
}
Log.i("LOG", "UserInput: " + userInput + ", UserAge: " + userAge);
txtCaption.setText(userInput + " " + userAge + " YO");
}
Button btnClose = (Button) findViewById(R.id.btnClose);
btnClose.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
SecondActivity.this.finish();
}
});
}
}
پاسخها 3
توی لاگ اولین ارور اینه:
java.lang.NumberFormatException: unable to parse '' as integer
نظرات
دقیقا چه موقع ارور میده؟ وقتی روی دکمه کلیک میکنید؟ آی دی دکمه رو درست تعریف کردید؟
کلین کردم درست نشد.طبق ارور بالا مشکل از کد زیره وقتی پاکش میکنم درست میشه مشکل این کد چیه؟
;( () int userAge = Integer.parseInt(edtUserAge.getText().toString
آره وقتی روی دکمه کلیک میشه خطا میده آی دی هم:btnGoNext
بچه ها این سورس کد TestActivities خود استاد هست ولی من Activity اول رو صفحه اصلی قرار دادم اگه دسترسی دارید میتونید چک کنید
خوب این به خاطر این هست که شما داری ادیت باکس رو خالی پارز به int و این امکان نداره چون مقداری "" به int پارز نمیشه باید براش یه شرط قرار بدی بگی اگر مقدار ادیتباکست مخالف "" بود اون وقت پارزش کنه
سورس رو بذارین بهتر می توان متوجه شد
int userAge =Integer.parseInt(edtUserAge.getText().toString());
فک کنم اگه این قسمت از کد رو با یه if تعریف کنی درست میشه
یعنی بگی اگر سمت راست مساوی برابر "" کوتیشن خالی شد یه حرکتی بزنه روش مثلا صفرش کنه
در غیر اینصورت بشه محتوای ورودیش
int userAge;
if(edtUserAge.getText().toString() == ""){
userAge = 0;
}else{
userAge =Integer.parseInt(edtUserAge.getText().toString());
}
نظرات
درسته
باز هم خطا میده..
خط های قبلی رو کامنت کن و این خط رو بزار جاش String edt = edtAge.getText().toString(); و زیرش یه لاگ بزار ببین مقداری که توش هست وقتی خالیه چیه دقیقا
ممنون درست شد.. کد String userAge = edtUserAge.getText().toString();
رو بجای int userAge =Integer.parseInt(edtUserAge.getText().toString()); گذاشتم.
الان چون userAge استرینگ هست عدد قبول نمیکنه و مقدار پیش فرض یعنی صفر نمایش داده میشه..
: اینو باید از قسمت xml مقدار input type رو براش Number بذاری
درسته..توی Activity دوم هم باید int رو به String تغییر میدادم که حالا درست شد.. ببخشید دیگه من تازه کارم!
دوستان اگه نخوایم userAge رو به استرینگ تبدیل کنیم مثلا بخوایم قبل نمایشش اونو در 2 ضرب کنیم باید چیکار کرد؟
من یه سری کارای مبتدی انجام دادم ولی بازم کرش میکنه!
public class FirstActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.form1);
Button btnGoNext = (Button) findViewById(R.id.btnGoNext);
final EditText edtUserInput = (EditText) findViewById(R.id.edtUserInput);
final EditText edtUserAge = (EditText) findViewById(R.id.edtUserAge);
btnGoNext.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
String userInput = edtUserInput.getText().toString();
String userAge = edtUserAge.getText().toString();
Intent intent = new Intent(FirstActivity.this, SecondActivity.class);
intent.putExtra("USER_INPUT", userInput);
intent.putExtra("USER_AGE", userAge);
FirstActivity.this.startActivity(intent);
FirstActivity.this.finish();
}
});
}
}
public class SecondActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.form2);
TextView txtCaption = (TextView) findViewById(R.id.txtCaption);
Bundle extras = getIntent().getExtras();
if (extras != null) {
String userInput = "";
String userAge = "";
if (extras.containsKey("USER_INPUT")) {
userInput = extras.getString("USER_INPUT");
}
if (extras.containsKey("USER_AGE")) {
userAge = extras.getString("USER_AGE");
}
Log.i("LOG", "UserInput: " + userInput + ", UserAge: " + userAge);
int user = 0;
if (userAge != "") {
user = Integer.parseInt(userAge);
}
txtCaption.setText(userInput + " " + (user * 2) + " YO");
}
Button btnClose = (Button) findViewById(R.id.btnClose);
btnClose.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
SecondActivity.this.finish();
}
});
}
}
نظرات
دوستان کسی نظری نداره!؟
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .
ویرایش
پیام
نظرات