بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]
پرسش و پاسخ

خطای توقف اجباری در ارتباط بین دو اکتیویتی

مدیریت گفتگو
Muta 9 سال پیش
آخرین تغییر: 9 سال پیش

با سلام

دوستان من مثال فصل 5 رو همانطور که استاد گفت کدنویسی کردم اما باز هم با زدن دکمه برای ارسال اطلاعات از اکتیویتی 1 به اکتیویتی 2 اگر کاربر مقداری وارد نکنه برنامه فورس کلوز میده مشکل کجاست؟

 package soltani.mohammadreza.course.app.yek.mordad.navadoshesh;

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 FirstActivity extends Activity {

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

        Button btngoform2 = (Button) findViewById(R.id.btngoform2);
        final EditText edtusername = (EditText) findViewById(R.id.edtusername);
        final EditText edtuserage = (EditText) findViewById(R.id.edtuserage);
        btngoform2.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                String username = edtusername.getText().toString();
                int userage = Integer.parseInt(edtuserage.getText().toString());

                Intent click = new Intent(FirstActivity.this, SecondActivity.class);
                click.putExtra("USER_NAME", username);
                click.putExtra("USER_AGE", userage);
                FirstActivity.this.startActivity(click);
                FirstActivity.this.finish();

            }
        });
    }
}
 package soltani.mohammadreza.course.app.yek.mordad.navadoshesh;

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.TextView;


public class SecondActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.form2);
        TextView txtcaption = (TextView) findViewById(R.id.txtcaption);
        Bundle extarclick = getIntent().getExtras();
        if (extarclick != null) {
            String username = null;
            int userage = 0;
            if (extarclick.containsKey("USER_NAME")) {

                username = extarclick.getString("USER_NAME");
            }
            if (extarclick.containsKey("USER_AGE")) {
                userage = extarclick.getInt("USER_AGE");
            }

            txtcaption.setText("username is : " + username + "age is : " + userage);

        }

        Button btnclose = (Button) findViewById(R.id.btnclose);
        Button btngoform1 = (Button) findViewById(R.id.btngoform1);

        btnclose.setOnClickListener(new OnClickListener() {

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

            }
        });

        btngoform1.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                Intent intent = new Intent(SecondActivity.this, FirstActivity.class);
                SecondActivity.this.startActivity(intent);

            }
        });
    }

}

اینم کدهای دو اکتیویتی

نظرات

nero 360 9 سال پیش
اگر تونستی پیغام Force close رو بزار
Muta 9 سال پیش
اگر نوع مقدار userage رو از int به string تغییر بدهیم خطا برطرف میشه و در واقع متن خطا میگه نمیشه هیچ چیز یا خالی رو به int نسبت داد اما وقتی استرینگ می کنیم خطا برطرف میشه اما وقتی کاربر عدد وارد میکنه در فرم دوم برای age همان مقدار اولیه یعنی صفر رو میزنه. چجوری برطرف کنم این مشکل؟

پاسخ‌ها 3

nero 360 9 سال پیش

مشکلی از setText از . کاربر اگر مقداری وارد نکنه شما میای null رو setText میکنی و این اشتباهه  . کد زیر را بنویس و امتحان کن

 
 if (extarclick != null) {
            String username = "";
            int userage = 0;
            if (extarclick.containsKey("USER_NAME")) {

                username = extarclick.getString("USER_NAME");
            }
            if (extarclick.containsKey("USER_AGE")) {
                userage = extarclick.getInt("USER_AGE");
            }

            txtcaption.setText("username is : " + username + "age is : " + userage);

        }

نظرات

Muta 9 سال پیش
امتحان کردم نشد
mester_initialer 9 سال پیش

درود . استفاده از متد toString  بر روی یک null زمانی که کاربر داده ای وارد نمی کند باعث کرش برنامه می شود. برای حل این مشکل ابتدا به کمک یک if از ورودی داده اطمینان حاصل کنید. به این صورت 

if(edtusername.getText()!=null){
String username = edtusername.getText().toString();
}

نظرات

Muta 9 سال پیش

سلام

هیچ کدوم از این کارها جواب نداد فکر میکنم مشکل از ورودی userage است.

نظرات

nero 360 9 سال پیش
اگه usarage null باشه نباید setText() کنی
Muta 9 سال پیش
از راهنماییتون ممنونم اما حل نشد

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