【问题标题】:AlertDialog doesnt work inside ActivityGroupAlertDialog 在 ActivityGroup 中不起作用
【发布时间】:2013-05-26 01:24:11
【问题描述】:

我有一个主要的活动有三个标签管理员。 在第一个选项卡中,当单击每个项目必须离开 AlertDialog 时,使用 listview 调用我到 groupactivity 中的另一个活动我有以下错误:

05-25 20:06:58.025: E/AndroidRuntime(26021): FATAL EXCEPTION: main
05-25 20:06:58.025: E/AndroidRuntime(26021): android.view.WindowManager$BadTokenException: Unable to add window -- token android.app.LocalActivityManager$LocalActivityRecord@44c227a8 is not valid; is your activity running?
05-25 20:06:58.025: E/AndroidRuntime(26021):    at android.view.ViewRoot.setView(ViewRoot.java:505)
05-25 20:06:58.025: E/AndroidRuntime(26021):    at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:177)
05-25 20:06:58.025: E/AndroidRuntime(26021):    at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91)
05-25 20:06:58.025: E/AndroidRuntime(26021):    at android.view.Window$LocalWindowManager.addView(Window.java:424)
05-25 20:06:58.025: E/AndroidRuntime(26021):    at android.app.Dialog.show(Dialog.java:241)
05-25 20:06:58.025: E/AndroidRuntime(26021):    at utp.android.aplicacion.ListarAlumnos$1.run(ListarAlumnos.java:170)
05-25 20:06:58.025: E/AndroidRuntime(26021):    at android.app.Activity.runOnUiThread(Activity.java:3707)
05-25 20:06:58.025: E/AndroidRuntime(26021):    at utp.android.aplicacion.ListarAlumnos.onItemClick(ListarAlumnos.java:149)
05-25 20:06:58.025: E/AndroidRuntime(26021):    at android.widget.AdapterView.performItemClick(AdapterView.java:284)
05-25 20:06:58.025: E/AndroidRuntime(26021):    at android.widget.ListView.performItemClick(ListView.java:3382)
05-25 20:06:58.025: E/AndroidRuntime(26021):    at android.widget.AbsListView$PerformClick.run(AbsListView.java:2394)
05-25 20:06:58.025: E/AndroidRuntime(26021):    at android.os.Handler.handleCallback(Handler.java:587)
05-25 20:06:58.025: E/AndroidRuntime(26021):    at android.os.Handler.dispatchMessage(Handler.java:92)
05-25 20:06:58.025: E/AndroidRuntime(26021):    at android.os.Looper.loop(Looper.java:123)
05-25 20:06:58.025: E/AndroidRuntime(26021):    at android.app.ActivityThread.main(ActivityThread.java:4627)
05-25 20:06:58.025: E/AndroidRuntime(26021):    at java.lang.reflect.Method.invokeNative(Native Method)
05-25 20:06:58.025: E/AndroidRuntime(26021):    at java.lang.reflect.Method.invoke(Method.java:521)
05-25 20:06:58.025: E/AndroidRuntime(26021):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
05-25 20:06:58.025: E/AndroidRuntime(26021):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
05-25 20:06:58.025: E/AndroidRuntime(26021):    at dalvik.system.NativeStart.main(Native Method)

主要活动:

public class Administrador  extends TabActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_administrador);

        TabHost tabHost = getTabHost();

        TabSpec photospec = tabHost.newTabSpec("Mantenimiento");
        photospec.setIndicator("Mantenimiento", getResources().getDrawable(R.drawable.icon_photos_tab));
        Intent photosIntent = new Intent(this, ListarAlumnos.class);
        photospec.setContent(photosIntent);

        TabSpec songspec = tabHost.newTabSpec("Asignaciones");
        songspec.setIndicator("Asignaciones", getResources().getDrawable(R.drawable.icon_songs_tab));
        Intent songsIntent = new Intent(this, Asignaciones.class);
        songspec.setContent(songsIntent);

        TabSpec videospec = tabHost.newTabSpec("Reportes");
        videospec.setIndicator("Reportes", getResources().getDrawable(R.drawable.icon_videos_tab));
        Intent videosIntent = new Intent(this, Reportes.class);
        videospec.setContent(videosIntent);

        // Adding all TabSpec to TabHost
        tabHost.addTab(photospec); // Adding photos tab
        tabHost.addTab(songspec); // Adding songs tab
        tabHost.addTab(videospec); // Adding videos tab



    }

}

活动列表校友:

public class ListarAlumnos extends ActivityGroup implements OnItemClickListener{


    public static MenuAdministrador context; 

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

        View viewToLoad = LayoutInflater.from(this.getParent()).inflate(R.layout.activity_listar_alumnos, null);
        this.setContentView(viewToLoad);

        //setContentView(R.layout.activity_listar_alumnos);




        lstalumnos = (ListView)findViewById(R.id.LISTAPRUEBA);
        lstalumnos.setOnItemClickListener(this);

        ///THE LISTVIEW CONTAINS DATA OF DATABASE 

    }



    public void onItemClick(AdapterView<?> arg0, View arg1, final int arg2, long arg3) {

        Toast.makeText(getApplicationContext(), "ok", 1000).show();
            //Context appContext = this.getApplicationContext();
            //Dialog builder = new Dialog(appContext);

        runOnUiThread(new Runnable() {

            public void run() {
                // TODO Auto-generated method stub

                final AlertDialog.Builder builder = new AlertDialog.Builder(getParent());
                ///builder.setTitle("Matenimiento de "+ Apellido.get(arg2));
                ///builder.setMessage("Por favor, escoger accion : ");
                ///builder.setPositiveButton("Actualizar", new DialogInterface.OnClickListener()
                ///{

                ///public void onClick(DialogInterface dialog, int which) {
                ///Actualizar(arg2);
                ///}
                ///});
                ///builder.setNegativeButton("Deshabilitar", new DialogInterface.OnClickListener() {

                ///public void onClick(DialogInterface dialog, int which) {
                ///     Eliminar(arg2);
                ///}
                ///});
                builder.create().show();            


            }})
        ;

    }

【问题讨论】:

    标签: android tabs android-alertdialog activitygroup


    【解决方案1】:

    有很多问题可以处理类似的问题。上下文似乎有问题。见:

    how to show alert inside an activity group?

    Dialog Box in Activity group inside a TabActivity not working

    Problems on an activitygroup under tabshost

    希望这会有所帮助。

    【讨论】:

    • 我认为每个活动都应该有一个带有自己上下文的对话框。当您尝试打开对话框时,当它应该运行的其他活动已经结束时,此错误会出错。当显示对话框并且打开它的活动被破坏时,它也可能发生。
    • 你是对的!但是 getParent() 但对我和真相不起作用,并尝试了一切感谢您的回答!
    • 我还注意到在上面的代码中您只创建了对话框。你在哪里dismissing呢?应该有一个使用.dismiss() 销毁/关闭它的地方。它可以是单击对话框中的任何按钮或任何其他方式。但是如果不关闭它肯定会报这个错误。
    • Antes de usar tab corrió perfectamente, el problema surgio cuando le añadí el tab al principio y por consiguiente los ActivityGroup :(
    • 在使用标签运行完美之前,当我在开头添加标签时出现问题,因此 ActivityGroup :(
    猜你喜欢
    • 2011-09-11
    • 1970-01-01
    • 1970-01-01
    • 2017-09-03
    • 2016-08-29
    • 1970-01-01
    • 2011-06-21
    • 1970-01-01
    • 2023-03-15
    相关资源
    最近更新 更多