Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么调用dialog.show()会导致错误?_Java_Android - Fatal编程技术网

Java 为什么调用dialog.show()会导致错误?

Java 为什么调用dialog.show()会导致错误?,java,android,Java,Android,在活动中,我运行alertdialog,应用程序中出现错误。之后,应用程序关闭。在这个论坛上,我发现了一个类似的问题。建议添加onDestroy()方法: 我补充说,但可能是错的,因为我只是在学习,不太懂。onDestroy()以红色点亮。如何正确地编写代码 import public class ActivityBox_4 extends AppCompatActivity { SharedPreferences sp; @Override protected void onCreate

在活动中,我运行alertdialog,应用程序中出现错误。之后,应用程序关闭。在这个论坛上,我发现了一个类似的问题。建议添加onDestroy()方法:

我补充说,但可能是错的,因为我只是在学习,不太懂。onDestroy()以红色点亮。如何正确地编写代码

import

public class ActivityBox_4 extends AppCompatActivity {

SharedPreferences sp;

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

    sp = getSharedPreferences("app_data", 0);

    SharedPreferences sp = getSharedPreferences("app_data",0);

    TextView Moltext27 = findViewById(R.id.Moltext27);
    String text27 ="<br />" + "<b>\t\t\tМОЛИТВА ДО СВЯТОГО (СВЯТОЇ)</b><br />"+
            "\t\t\tДо тебе, о святий угодниче Божий/ <i>свята угоднице Божа (ім’я), <br />";
    Moltext27.setTextSize(TypedValue.COMPLEX_UNIT_SP,sp.getInt("size",18));
    Moltext27.setText(Html.fromHtml(text27));

    TextView Moltext28 = findViewById(R.id.Moltext28);
    String text28 = "<b>\t\t\tМОЛИТВА ЗА ТИХ, КОГО ПЕРЕСЛІДУЮТЬ ЗА ВІРУ ПРАВОСЛАВНУ</b><br />"+
            "\t\t\tСпаси, Господи, і помилуй старців і молодих, нужденних і сиріт і тих, <br />";
    Moltext28.setTextSize(TypedValue.COMPLEX_UNIT_SP,sp.getInt("size",18));
    Moltext28.setText(Html.fromHtml(text28));


    final ScrollView scrollView = findViewById(R.id.scroll_2);

    Button move_27 = findViewById(R.id.butM_27);
    Button move_28 = findViewById(R.id.butM_28);


    move_27.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            scrollView.postDelayed(new Runnable() {
                public void run() {
                    scrollView.scrollTo(0, (int) findViewById(R.id.Moltext27).getY());
                }
            }, 100);
        }
    });

    move_28.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            scrollView.postDelayed(new Runnable() {
                public void run() {
                    scrollView.scrollTo(0, (int) findViewById(R.id.Moltext28).getY());
                }
            }, 100);
        }
    });

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_HOME) {

        return true;
    }

    return super.onKeyDown(keyCode, event);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {

    int id = item.getItemId();

    if (id == R.id.Сhoose_Size) {
        AlertDialog.Builder builder = new AlertDialog.Builder(this);

        builder.setTitle("Оберіть розмір тексту");
        final String[] sizes = {"16", "18", "20", "22", "24", "26"};

        int selected_item = -1;

        switch (sp.getInt("size", -1)) {
            case 16:
                selected_item = 0;
                break;
            case 18:
                selected_item = 1;
                break;
            case 20:
                selected_item = 2;
                break;
            case 22:
                selected_item = 3;
                break;
            case 24:
                selected_item = 4;
                break;
            case 26:
                selected_item = 5;
                break;
        }

        builder.setSingleChoiceItems(sizes, selected_item, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int item) {

                switch (item) {
                    case 0:
                        sp.edit().putInt("size", 16).apply();
                        recreate();
                        break;
                    case 1:
                        sp.edit().putInt("size", 18).apply();
                        recreate();
                        break;
                    case 2:
                        sp.edit().putInt("size", 20).apply();
                        recreate();
                        break;
                    case 3:
                        sp.edit().putInt("size", 22).apply();
                        recreate();
                        break;
                    case 4:
                        sp.edit().putInt("size", 24).apply();
                        recreate();
                        break;
                    case 5:
                        sp.edit().putInt("size", 26).apply();
                        recreate();
                        break;
                }

            }


        });

        builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();
            }
        });

        AlertDialog dialog = builder.create();
        dialog.show();
        return true;
    }

    return super.onOptionsItemSelected(item);
}

@Override
protected void onDestroy()
{
    super.onDestroy();
    if (dialog!=null && dialog.isShowing()){
        dialog.dismiss();
    }
}

}

2019-08-12 13:45:03.966 15878-15878/ua.pl.prayerbook E/WindowManager: android.view.WindowLeaked: Activity ua.pl.prayerbook.old_unused.ActivityBox_4 has leaked window DecorView@b946dac[] that was originally added here
    at android.view.ViewRootImpl.<init>(ViewRootImpl.java:417)
    at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:331)
    at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:93)
    at android.app.Dialog.show(Dialog.java:316)
    at ua.pl.prayerbook.old_unused.ActivityBox_4.onOptionsItemSelected(ActivityBox_4.java:171)
    at android.app.Activity.onMenuItemSelected(Activity.java:3204)
    at android.support.v4.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:436)
    at android.support.v7.app.AppCompatActivity.onMenuItemSelected(AppCompatActivity.java:196)
    at android.support.v7.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:109)
    at android.support.v7.app.AppCompatDelegateImpl.onMenuItemSelected(AppCompatDelegateImpl.java:888)
    at android.support.v7.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:840)
    at android.support.v7.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:158)
    at android.support.v7.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:991)
    at android.support.v7.view.menu.MenuPopup.onItemClick(MenuPopup.java:128)
    at android.widget.AdapterView.performItemClick(AdapterView.java:310)
    at android.widget.AbsListView.performItemClick(AbsListView.java:1155)
    at android.widget.AbsListView$PerformClick.run(AbsListView.java:3120)
    at android.widget.AbsListView.onTouchUp(AbsListView.java:4047)
    at android.widget.AbsListView.onTouchEvent(AbsListView.java:3806)
    at android.support.v7.widget.DropDownListView.onTouchEvent(DropDownListView.java:217)
    at android.support.v7.widget.MenuPopupWindow$MenuDropDownListView.onTouchEvent(MenuPopupWindow.java:129)
    at android.view.View.dispatchTouchEvent(View.java:9943)   
 at android.view.ViewGroup.dispatchTransformedTouchEvent 
(ViewGroup.java:2663)
导入
公共类活动Box_4扩展了AppCompatActivity{
共享参考sp;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u box\u 4);
sp=GetSharedReferences(“应用程序数据”,0);
SharedReferences sp=GetSharedReferences(“应用程序数据”,0);
TextView Moltext27=findViewById(R.id.Moltext27);
字符串text27=“
”+”\t\t\tМЛСЯЯЯЯЯЯЯЯЯ)
+ “\t\t\tбб,бббббб/бббббббб(іжббж),
”; Moltext27.setTextSize(TypedValue.COMPLEX_UNIT_SP,SP.getInt(“size”,18)); setText(Html.fromHtml(text27)); TextView Moltext28=findViewById(R.id.Moltext28); 字符串text28=“\t\t\tМСЛСЯСЛЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮЮ+ “\t\t\tСааааааааа、іЮаЮа、іЮЮЮЮЮЮ、іііЮЮЮЮ; Moltext28.setTextSize(TypedValue.COMPLEX_UNIT_SP,SP.getInt(“size”,18)); setText(Html.fromHtml(text28)); 最终ScrollView ScrollView=findViewById(R.id.scroll_2); 按钮移动=findViewById(R.id.butM_27); 按钮移动=findViewById(R.id.butM_28); move_27.setOnClickListener(新视图.OnClickListener(){ @凌驾 公共void onClick(视图v){ scrollView.postDelayed(新的Runnable(){ 公开募捐{ scrollView.scrollTo(0,(int)findViewById(R.id.Moltext27.getY()); } }, 100); } }); move_28.setOnClickListener(新视图.OnClickListener(){ @凌驾 公共void onClick(视图v){ scrollView.postDelayed(新的Runnable(){ 公开募捐{ scrollView.scrollTo(0,(int)findViewById(R.id.Moltext28.getY()); } }, 100); } }); } @凌驾 公共布尔onCreateOptions菜单(菜单){ //为菜单充气;这会将项目添加到操作栏(如果存在)。 getMenuInflater().充气(R.menu.main,menu); 返回true; } @凌驾 公共布尔onKeyDown(int-keyCode,KeyEvent事件){ if(keyCode==KeyEvent.keyCode\u HOME){ 返回true; } 返回super.onKeyDown(keyCode,event); } @凌驾 公共布尔值onOptionsItemSelected(菜单项项){ int id=item.getItemId(); 如果(id==R.id.С蹄尺寸){ AlertDialog.Builder=新建AlertDialog.Builder(此); 建筑商名称(“бззЮзіЮзЮЮЮзЮЮЮЮЮ; 最终字符串[]大小={“16”、“18”、“20”、“22”、“24”、“26”}; int selected_item=-1; 开关(sp.getInt(“大小”,-1)){ 案例16: 所选项目=0; 打破 案例18: 所选项目=1; 打破 案例20: 所选项目=2; 打破 案例22: 所选项目=3; 打破 案例24: 所选项目=4; 打破 案例26: 所选项目=5; 打破 } setSingleChoiceItems(大小、选定的_项、新的DialogInterface.OnClickListener(){ @凌驾 公共void onClick(对话框接口对话框,int项){ 开关(项目){ 案例0: sp.edit().putInt(“大小”,16).apply(); 重新创建(); 打破 案例1: sp.edit().putInt(“大小”,18.apply(); 重新创建(); 打破 案例2: sp.edit().putInt(“大小”,20).apply(); 重新创建(); 打破 案例3: sp.edit().putInt(“大小”,22).apply(); 重新创建(); 打破 案例4: sp.edit().putInt(“大小”,24.apply(); 重新创建(); 打破 案例5: sp.edit().putInt(“大小”,26).apply(); 重新创建(); 打破 } } }); setNegativeButton(“取消”,新建DialogInterface.OnClickListener()){ @凌驾 public void onClick(DialogInterface dialog,int which){ dialog.dismise(); } }); AlertDialog=builder.create(); dialog.show(); 返回true; } 返回super.onOptionsItemSelected(项目); } @凌驾 受保护的空onDestroy() { super.ondestory(); if(dialog!=null&&dialog.isShowing()){ dialog.dismise(); } } } 2019-08-12 13:45:03.966 15878-15878/ua.pl.ragerbook E/WindowManager:android.view.WindowLeaked:Activity ua.pl.ragerbook.old_unused.ActivityBox_4已泄漏窗口DecorView@b946dac[]最初添加到此处的 在android.view.ViewRootImpl。(ViewRootImpl.java:417) 位于android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:331) 在android.view.WindowManagerImpl.addView(WindowManagerImpl.java:93) 在android.app.Dialog.show上(Dialog.java:316) 在ua.pl.prayerbook.old_unused.Activi
AlertDialog.Builder builder = new AlertDialog.Builder(this);

builder.setTitle("Оберіть розмір тексту");
final String[] sizes = {"16", "18", "20", "22", "24", "26"};

int selected_item = -1;

switch (sp.getInt("size", -1)) {
    case 16:
        selected_item = 0;
        break;
    case 18:
        selected_item = 1;
        break;
    case 20:
        selected_item = 2;
        break;
    case 22:
        selected_item = 3;
        break;
    case 24:
        selected_item = 4;
        break;
    case 26:
        selected_item = 5;
        break;
}

builder.setSingleChoiceItems(sizes, selected_item, new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int item) {

        switch (item) {
            case 0:
                sp.edit().putInt("size", 16).apply();
                recreate();
                break;
            case 1:
                sp.edit().putInt("size", 18).apply();
                recreate();
                break;
            case 2:
                sp.edit().putInt("size", 20).apply();
                recreate();
                break;
            case 3:
                sp.edit().putInt("size", 22).apply();
                recreate();
                break;
            case 4:
                sp.edit().putInt("size", 24).apply();
                recreate();
                break;
            case 5:
                sp.edit().putInt("size", 26).apply();
                recreate();
                break;
        }

    }


});

builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        dialog.cancel();
    }
});


builder.show();
    public class ActivityBox_4 extends AppCompatActivity {

    SharedPreferences sp;
    AlertDialog.Builder builder;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_box_4);
     builder = new AlertDialog.Builder(this);
}
private AlertDialog mDialog;

public AlertDialog.Builder createDialog() {
    AlertDialog.Builder builder = new android.app.AlertDialog.Builder(this);

    builder.setTitle(R.string.CONTACTDETAIL__status_offline)
            .setMessage(R.string.CONNECTION_BANNER__text)
            .setPositiveButton(R.string.GENERIC__ok, (dialog, which) -> mPresenter.connectionDialogClosed());
    builder.setCancelable(false);
    return builder;
}