активность, запущенная startActivityForResult, завершается сбоем при возврате данных - PullRequest
0 голосов
/ 16 июня 2010

Привет, я создал приложение B, вызываемое приложением A с помощью метода startActivityForResult. Когда B пытается вернуть результат в A, происходит сбой приложения, и я получаю эту ошибку (кстати, com.sistematica.carichispeciali.MobiWork - это приложение A, которое вызывает B с помощью startActivityForResult)

06-16 09:40:32.506: WARN/dalvikvm(744): threadid=3: thread exiting with uncaught exception (group=0x4001b390)
06-16 09:40:32.506: ERROR/AndroidRuntime(744): Uncaught handler: thread main exiting due to uncaught exception
06-16 09:40:32.526: ERROR/AndroidRuntime(744): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { (has extras) }} to activity {com.sistematica.carichispeciali/com.sistematica.carichispeciali.MobiWork}: java.lang.NullPointerException
06-16 09:40:32.526: ERROR/AndroidRuntime(744):     at android.app.ActivityThread.deliverResults(ActivityThread.java:3504)
06-16 09:40:32.526: ERROR/AndroidRuntime(744):     at android.app.ActivityThread.handleSendResult(ActivityThread.java:3546)
06-16 09:40:32.526: ERROR/AndroidRuntime(744):     at android.app.ActivityThread.access$2700(ActivityThread.java:126)
06-16 09:40:32.526: ERROR/AndroidRuntime(744):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1962)
06-16 09:40:32.526: ERROR/AndroidRuntime(744):     at android.os.Handler.dispatchMessage(Handler.java:99)
06-16 09:40:32.526: ERROR/AndroidRuntime(744):     at android.os.Looper.loop(Looper.java:123)
06-16 09:40:32.526: ERROR/AndroidRuntime(744):     at android.app.ActivityThread.main(ActivityThread.java:4595)
06-16 09:40:32.526: ERROR/AndroidRuntime(744):     at java.lang.reflect.Method.invokeNative(Native Method)
06-16 09:40:32.526: ERROR/AndroidRuntime(744):     at java.lang.reflect.Method.invoke(Method.java:521)
06-16 09:40:32.526: ERROR/AndroidRuntime(744):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
06-16 09:40:32.526: ERROR/AndroidRuntime(744):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
06-16 09:40:32.526: ERROR/AndroidRuntime(744):     at dalvik.system.NativeStart.main(Native Method)
06-16 09:40:32.526: ERROR/AndroidRuntime(744): Caused by: java.lang.NullPointerException
06-16 09:40:32.526: ERROR/AndroidRuntime(744):     at com.sistematica.carichispeciali.MobiWork.onActivityResult(MobiWork.java:96)
06-16 09:40:32.526: ERROR/AndroidRuntime(744):     at android.app.Activity.dispatchActivityResult(Activity.java:3868)
06-16 09:40:32.526: ERROR/AndroidRuntime(744):     at android.app.ActivityThread.deliverResults(ActivityThread.java:3500)
06-16 09:40:32.526: ERROR/AndroidRuntime(744):     ... 11 more

так B возвращает результат

private void risultato(final String paper)
      {
          AlertDialog.Builder builder = new AlertDialog.Builder(this);
          builder.setIcon(R.drawable.alt);
          builder.setTitle("risultato");
          builder.setMessage("è "+paper+" la targa?");
          builder.setPositiveButton("si", new DialogInterface.OnClickListener(){
              @Override
              public void onClick(DialogInterface dialog, int which)
              {
                dialog.dismiss();
                resultIntent = new Intent();
                resultIntent.putExtra("1", paper);
                setResult(Activity.RESULT_OK, resultIntent);
                finish();
              }
          });
          builder.setNegativeButton("no", new DialogInterface.OnClickListener(){
              @Override
              public void onClick(DialogInterface dialog, int which)
              {
                 delRES();
              }
          });
          builder.show();
      };

и это то, как A использует его (он должен взять возвращенную строку и поместить ее в editText, никогда не удастся увидеть, действительно ли она работает, так как он аварийно завершился)

  public void onActivityResult(int requestCode, int resultCode, Intent data) {     
      super.onActivityResult(requestCode, resultCode, data); 
      switch(requestCode) { 
        case (1) : { 
          if (resultCode == Activity.RESULT_OK) { 
          String newText = data.getStringExtra("1");
          m_plateField.setText(newText);
          } 
          break; 
        } 
      } 
    }

1 Ответ

0 голосов
/ 18 июня 2010

Я думаю, что это связано с этой строкой:

String newText = data.getStringExtra("1");

Что может возвращать ноль.

Когда вы добавляете дополнительный, добавьте пакет вашего приложения:

resultIntent.putExtra("com.sistematica.carichispeciali.1", paper);

Тогда прочитайте это как:

String newText = data.getStringExtra("com.sistematica.carichispeciali.1");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...