onBackPressed () приводит к падению - PullRequest
0 голосов
/ 21 февраля 2012

Я пытаюсь заставить тихое простое занятие работать.моя деятельность включает в себя две кнопки, и я пытаюсь заставить одну из них работать как простая кнопка возврата (вернуться к предыдущему занятию), любая помощь?

вот мой код:

 public void valider(View v)
{


    c.setNomPrenom(et1.getText().toString());
    c.setmPortable(et2.getText().toString());
    c.setmFixe(et3.getText().toString());

    i.putExtra(ContactActivity.TAG_AJOUT_EDIT, c);

    setResult(RESULT_OK,i);

    finish();
}

@Override
public void onBackPressed() {

    super.onBackPressed();
}

public void retour(View v)
{
    onBackPressed();
}

Вот что показывает LogCat:

    02-21 20:03:46.286: W/dalvikvm(1221): threadid=1: thread exiting with uncaught exception (group=0x409c01f8)
    02-21 20:03:46.336: E/AndroidRuntime(1221): FATAL EXCEPTION: main
    02-21 20:03:46.336: E/AndroidRuntime(1221): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=0, data=null} to activity {hd.android.contact/hd.android.contact.ContactActivity}: java.lang.NullPointerException
    02-21 20:03:46.336: E/AndroidRuntime(1221):     at android.app.ActivityThread.deliverResults(ActivityThread.java:2980)
    02-21 20:03:46.336: E/AndroidRuntime(1221):     at android.app.ActivityThread.handleSendResult(ActivityThread.java:3023)
    02-21 20:03:46.336: E/AndroidRuntime(1221):     at android.app.ActivityThread.access$1100(ActivityThread.java:123)
    02-21 20:03:46.336: E/AndroidRuntime(1221):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1177)
    02-21 20:03:46.336: E/AndroidRuntime(1221):     at android.os.Handler.dispatchMessage(Handler.java:99)
    02-21 20:03:46.336: E/AndroidRuntime(1221):     at android.os.Looper.loop(Looper.java:137)
    02-21 20:03:46.336: E/AndroidRuntime(1221):     at android.app.ActivityThread.main(ActivityThread.java:4424)
    02-21 20:03:46.336: E/AndroidRuntime(1221):     at java.lang.reflect.Method.invokeNative(Native Method)
    02-21 20:03:46.336: E/AndroidRuntime(1221):     at java.lang.reflect.Method.invoke(Method.java:511)
    02-21 20:03:46.336: E/AndroidRuntime(1221):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
    02-21 20:03:46.336: E/AndroidRuntime(1221):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
    02-21 20:03:46.336: E/AndroidRuntime(1221):     at dalvik.system.NativeStart.main(Native Method)
    02-21 20:03:46.336: E/AndroidRuntime(1221): Caused by: java.lang.NullPointerException
    02-21 20:03:46.336: E/AndroidRuntime(1221):     at    hd.android.contact.ContactActivity.onActivityResult(ContactActivity.java:132)
    02-21 20:03:46.336: E/AndroidRuntime(1221):     at android.app.Activity.dispatchActivityResult(Activity.java:4649)
    02-21 20:03:46.336: E/AndroidRuntime(1221):     at android.app.ActivityThread.deliverResults(ActivityThread.java:2976)

Заранее спасибо.

Редактировать:

Я тоже пробовал это, но это не помогло:

        EditText et1,et2,et3;
Contact c;
Intent i=new Intent();
@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.contact_edit);

     c=(Contact) getIntent().getSerializableExtra("afficher");

     et1=(EditText) this.findViewById(R.id.editText4);
    String  str1=c.getNomPrenom();

     et2=(EditText) this.findViewById(R.id.editText5);
    String  str2=c.getmPortable();

     et3=(EditText) this.findViewById(R.id.editText6);
    String  str3=c.getmFixe();

    et1.setText(str1);
    et2.setText(str2);
    et3.setText(str3);

    Button btn_retour=(Button) findViewById(R.id.button5);
    btn_retour.setOnClickListener(retour);
    Button btn_valider=(Button) findViewById(R.id.button6);
    btn_valider.setOnClickListener(valider);
}
private OnClickListener valider= new OnClickListener() {

    public void onClick(View v) {


        c.setNomPrenom(et1.getText().toString());
        c.setmPortable(et2.getText().toString());
        c.setmFixe(et3.getText().toString());

        i.putExtra(ContactActivity.TAG_AJOUT_EDIT, c);

        setResult(RESULT_OK,i);

        finish();
    }
};

private OnClickListener retour= new OnClickListener() {

    public void onClick(View v) {

        finish();
    }
};

1 Ответ

1 голос
/ 22 февраля 2012

Из кода исключения вы можете видеть, что где-то в onActivityResult существует NullPointerException.При обработке события onClick для кнопки valider вы вызываете метод setResult (), но вы не делаете этого при нажатии кнопки, и я думаю, что это проблема.

...