Autore Topic: Recupero context da ActivityGroup annidate  (Letto 519 volte)

Offline Scfizioso

  • Nuovo arrivato
  • *
  • Post: 1
  • Respect: 0
    • Mostra profilo
Recupero context da ActivityGroup annidate
« il: 08 Novembre 2011, 10:10:28 CET »
0
Ciao a tutti, sono nuovo del portale e lavoro da poco su Android.
Spero di non duplicare la richiesta, ho cercato un po' da tutte le parti e non sono riuscito a trovare soluzione.

La mia situazione è la seguente:
Ho una GroupActivity che gestisce alcuni tab contenenti logicamente altre activity, una delle quali è un'altra GroupActivity con altri tab ed innestate altre activity.
Il problema è che non riesco a risalire dall'activity più "profonda" al context per lanciare una qualsiasi dialog o simil usage.
A logica avevo provato a risalire usando un doppio getParent() ma evidentemente non era la strada corretta..

Qualcuno è in grado di aiutarmi?

Posto il Log incriminato

Codice: [Seleziona]
11-08 09:58:15.310: ERROR/AndroidRuntime(742): FATAL EXCEPTION: main
11-08 09:58:15.310: ERROR/AndroidRuntime(742): java.lang.RuntimeException: Unable to start activity ComponentInfo{PACK.SECONDGROUPACTIVITY}: java.lang.RuntimeException: Unable to start activity ComponentInfo{PACK.MYDEEPACTIVITY}: android.view.WindowManager$BadTokenException: Unable to add window -- token android.app.LocalActivityManager$LocalActivityRecord@40598798 is not valid; is your activity running?
11-08 09:58:15.310: ERROR/AndroidRuntime(742):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1622)
11-08 09:58:15.310: ERROR/AndroidRuntime(742):     at android.app.ActivityThread.startActivityNow(ActivityThread.java:1462)
11-08 09:58:15.310: ERROR/AndroidRuntime(742):     at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:127)
11-08 09:58:15.310: ERROR/AndroidRuntime(742):     at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:339)
11-08 09:58:15.310: ERROR/AndroidRuntime(742):     at android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:654)
11-08 09:58:15.310: ERROR/AndroidRuntime(742):     at android.widget.TabHost.setCurrentTab(TabHost.java:326)
11-08 09:58:15.310: ERROR/AndroidRuntime(742):     at android.widget.TabHost$2.onTabSelectionChanged(TabHost.java:132)
11-08 09:58:15.310: ERROR/AndroidRuntime(742):     at android.widget.TabWidget$TabClickListener.onClick(TabWidget.java:456)
11-08 09:58:15.310: ERROR/AndroidRuntime(742):     at android.view.View.performClick(View.java:2485)
11-08 09:58:15.310: ERROR/AndroidRuntime(742):     at android.view.View$PerformClick.run(View.java:9080)
11-08 09:58:15.310: ERROR/AndroidRuntime(742):     at android.os.Handler.handleCallback(Handler.java:587)
11-08 09:58:15.310: ERROR/AndroidRuntime(742):     at android.os.Handler.dispatchMessage(Handler.java:92)
11-08 09:58:15.310: ERROR/AndroidRuntime(742):     at android.os.Looper.loop(Looper.java:123)
11-08 09:58:15.310: ERROR/AndroidRuntime(742):     at android.app.ActivityThread.main(ActivityThread.java:3647)
11-08 09:58:15.310: ERROR/AndroidRuntime(742):     at java.lang.reflect.Method.invokeNative(Native Method)
11-08 09:58:15.310: ERROR/AndroidRuntime(742):     at java.lang.reflect.Method.invoke(Method.java:507)
11-08 09:58:15.310: ERROR/AndroidRuntime(742):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
11-08 09:58:15.310: ERROR/AndroidRuntime(742):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
11-08 09:58:15.310: ERROR/AndroidRuntime(742):     at dalvik.system.NativeStart.main(Native Method)
11-08 09:58:15.310: ERROR/AndroidRuntime(742): Caused by: java.lang.RuntimeException: Unable to start activity ComponentInfo{PACK.MYDEEPACTIVITY}: android.view.WindowManager$BadTokenException: Unable to add window -- token android.app.LocalActivityManager$LocalActivityRecord@40598798 is not valid; is your activity running?
11-08 09:58:15.310: ERROR/AndroidRuntime(742):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1622)
11-08 09:58:15.310: ERROR/AndroidRuntime(742):     at android.app.ActivityThread.startActivityNow(ActivityThread.java:1462)
11-08 09:58:15.310: ERROR/AndroidRuntime(742):     at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:127)
11-08 09:58:15.310: ERROR/AndroidRuntime(742):     at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:339)
11-08 09:58:15.310: ERROR/AndroidRuntime(742):     at android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:654)
11-08 09:58:15.310: ERROR/AndroidRuntime(742):     at android.widget.TabHost.setCurrentTab(TabHost.java:326)
11-08 09:58:15.310: ERROR/AndroidRuntime(742):     at android.widget.TabHost.addTab(TabHost.java:216)
11-08 09:58:15.310: ERROR/AndroidRuntime(742):     at PACK.views.StoreView.drawView(StoreView.java:31)
11-08 09:58:15.310: ERROR/AndroidRuntime(742):     at PACK.StoreActivity.onCreate(StoreActivity.java:16)
11-08 09:58:15.310: ERROR/AndroidRuntime(742):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
11-08 09:58:15.310: ERROR/AndroidRuntime(742):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1586)
11-08 09:58:15.310: ERROR/AndroidRuntime(742):     ... 18 more
11-08 09:58:15.310: ERROR/AndroidRuntime(742): Caused by: android.view.WindowManager$BadTokenException: Unable to add window -- token android.app.LocalActivityManager$LocalActivityRecord@40598798 is not valid; is your activity running?
11-08 09:58:15.310: ERROR/AndroidRuntime(742):     at android.view.ViewRoot.setView(ViewRoot.java:527)
11-08 09:58:15.310: ERROR/AndroidRuntime(742):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177)
11-08 09:58:15.310: ERROR/AndroidRuntime(742):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
11-08 09:58:15.310: ERROR/AndroidRuntime(742):     at android.view.Window$LocalWindowManager.addView(Window.java:424)
11-08 09:58:15.310: ERROR/AndroidRuntime(742):     at android.app.Dialog.show(Dialog.java:241)
11-08 09:58:15.310: ERROR/AndroidRuntime(742):     at PACK.MYDEEPACTIVITY.onCreate(ArticlesActivity.java:79)
11-08 09:58:15.310: ERROR/AndroidRuntime(742):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
11-08 09:58:15.310: ERROR/AndroidRuntime(742):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1586)
11-08 09:58:15.310: ERROR/AndroidRuntime(742):     ... 28 more


Codice (Java): [Seleziona]
package PACK.adapter;

import java.util.ArrayList;
imports...;

public class PathListSpinnerAdapter extends ArrayAdapter<Path> implements ComplexAdapter<Path>{
        private Context context;
        private int viewId;
        private ArrayList<Path> items;
        private LayoutInflater vi;
       
       
        public PathListSpinnerAdapter(Context context, int viewId, ArrayList<Path> items) {
                super(context, viewId, items);
                this.viewId=viewId;
                this.context=context;
                this.items=items;
                this.vi = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        }
       
        @Override
    public View getView(int position, View convertView, ViewGroup parent) {
                View v = convertView;
        if (v == null) {
           v = vi.inflate(viewId, null);
        }
       
        Path item = items.get(position);
        if (item != null) {
                Log.i("ArticleListAdapter","compile list element");
                drawView(v,item);
        }
        return v;
    }
       
        @Override
        public void setDropDownViewResource(int resource) {
                super.setDropDownViewResource(resource);
        }
       
        @Override
        public View getDropDownView(int position, View convertView, ViewGroup parent) {
                View v = convertView;
        if (v == null) {
           v = vi.inflate(viewId, null);
        }
       
        Path item = items.get(position);
        if (item != null) {
                Log.i("PathListSpinnerAdapter","compile list element");
                drawView(v,item);
        }
        return v;
        }
       
        @Override
        public void drawView(View v, Path item) {
                TextView pathName= (TextView) v.findViewById(R.id.path_name);
                pathName.setText(item.getNameIt());
        }

}

Mi sono accorto che il problema è nella creazione dello spinner
« Ultima modifica: 08 Novembre 2011, 10:53:00 CET da Scfizioso »