2013-09-01 3 views
3

я сделать некоторые манипуляции с данными в фоновом потоке и после того как я хочу попросить пользователя выбрать переписывались активность для обработки результата:Android аварии с ChooserActivity

Intent chooserIntent = Intent.createChooser(intent, getString(R.string.select_application_for, intent.getData())); 
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, intents.toArray(new Parcelable[ intents.size() ])); 
startActivity(chooserIntent); 

Однако я всегда получаю аварии со следующим StackTrace:

android.app.SuperNotCalledException: Activity {android/com.android.internal.app.ChooserActivity} did not call through to super.onCreate() 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2025) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) 
at android.app.ActivityThread.access$600(ActivityThread.java:130) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:137) 
at android.app.ActivityThread.main(ActivityThread.java:4745) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:511) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
at dalvik.system.NativeStart.main(Native Method) 

Если я комментирую линия:

chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, intents.toArray(new Parcelable[ intents.size() ])); 

авария исчезает, но т его не то, что я хочу сделать.

Интересно, кто-то уже решил эту головоломку.

+0

Посмотрите это Android класс. И да, это имеет 'super.onCreate()' –

+1

Извините, это было бесполезное дело. Из источника это выглядит как '! (Pa [i] instanceof Intent)' оценивает true для одного или нескольких ваших намерений, 'pa' является' intents.toArray (new Parcelable [intents.size()]) ' , Можете ли вы использовать операторы 'Log' для подтверждения того, что элементы в' intents' действительно передают 'intents.get (i) instanceof Intent'? – Vikram

+0

Вы правы. Мои плохие глаза. Не могли бы вы отправить ответ, и я приму его. –

ответ

2

Проблема была решена следующим комментарием:

От источника, она выглядит (ра [я] InstanceOf Intent) оценивает, чтобы верно для одного или нескольких ваших намерений, ра быть intents.toArray (! new Parcelable [intents.size()]). Можете ли вы использовать операторы журнала для подтверждения того, что элементы в намерениях передают intents.get (i) instanceof Intent?

Источник:

public class [More ...] ChooserActivity extends ResolverActivity { 
    @Override 
    protected void [More ...] onCreate(Bundle savedInstanceState) { 

    .... 
    .... 

    Parcelable[] pa = intent.getParcelableArrayExtra(Intent.EXTRA_INITIAL_INTENTS); 
     Intent[] initialIntents = null; 
     if (pa != null) { 
      initialIntents = new Intent[pa.length]; 
      for (int i=0; i<pa.length; i++) { 

       // The check for if-statement is evaluating to `true` 
       if (!(pa[i] instanceof Intent)) { 
        Log.w("ChooseActivity", "Initial intent #" + i 
         + " not an Intent: " + pa[i]); 
        finish(); 
        return; 
       } 
       initialIntents[i] = (Intent)pa[i]; 
      } 
     } 
     super.onCreate(savedInstanceState, target, title, initialIntents, false); 
    } 
Смежные вопросы