如何解决requestFeature()必须在Android中添加内容之前被调用 [英] How to solve requestFeature() must be called before adding content in android

查看:874
本文介绍了如何解决requestFeature()必须在Android中添加内容之前被调用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我创建一个由简单的小登记表的应用在警告对话框弹出,当我们点击一​​个按钮。但它是显示称为错误的 android.util.AndroidRuntimeException:requestFeature()必须在添加内容之前被称为请使其解决

在这里,我也用了SQLite的DATABSE
这是我的活动

 包com.example.androidmaterial;进口com.gc.materialdesign.views.ButtonFlat;
进口com.gc.materialdesign.views.ButtonFloat;
进口com.gc.materialdesign.views.ButtonRectangle;
进口com.gc.materialdesign.widgets.Dialog;
进口android.app.Activity;
进口android.content.Context;
进口android.os.Bundle;
进口android.view.Menu;
进口android.view.MenuItem;
进口android.view.View;
进口android.view.View.OnClickListener;
进口android.view.Window;
进口android.view.inputmethod.InputMethodManager;
进口android.widget.Button;
进口android.widget.EditText;
进口android.widget.Toast;公共类样品扩展活动
{
    ButtonFloat键盘;
    ButtonRectangle hide_keyboard;
    LoginDataBaseAdapter login_database_adapter;
    ButtonFlat数据库;
    的EditText名称;    @覆盖
    保护无效的onCreate(捆绑savedInstanceState)
    {
        super.onCreate(savedInstanceState);        的setContentView(R.layout.activity_sample);
        login_database_adapter =新LoginDataBaseAdapter(Sample.this);
        login_database_adapter = login_database_adapter.open();        数据库=(ButtonFlat)findViewById(R.id.buttonflat);
        database.setOnClickListener(新View.OnClickListener()
        {            @覆盖
            公共无效的onClick(视图v)
            {
                对话dialog_signup =新的对话框(Sample.this,登记,请填写所有的细节);
                dialog_signup.setContentView(R.layout.activity_signup);
                最终的EditText用户名=(EditText上)dialog_signup.findViewById(R.id.editText1);
                最终的EditText密码=(EditText上)dialog_signup.findViewById(R.id.editText2);
                最终的EditText confirmpass =(EditText上)dialog_signup.findViewById(R.id.editText3);
                最终的EditText名=(EditText上)dialog_signup.findViewById(R.id.editText4);
                最后ButtonFlat寄存器=(ButtonFlat)dialog_signup.findViewById(R.id.buttonflat);
                register.setOnClickListener(新View.OnClickListener()
                {                    @覆盖
                    公共无效的onClick(视图v)
                    {
                        。字符串USER_NAME = name.getText()的toString();
                        。字符串mqs_user_name = username.getText()的toString();
                        。字符串mqs_password = password.getText()的toString();
                        。字符串mqs_confirmpass = confirmpass.getText()的toString();                        如果(mqs_user_name.equals()|| mqs_password.equals()|| mqs_confirmpass.equals())
                        {
                            Toast.makeText(Sample.this,有些字段为空,请输入所有字段,Toast.LENGTH_LONG).show();
                        }
                        如果(mqs_password!= mqs_confirmpass)
                        {
                            Toast.makeText(Sample.this,密码不匹配,Toast.LENGTH_LONG).show();
                        }
                        其他
                        {                            login_database_adapter.insertEntry(mqs_user_name,mqs_password);
                            Toast.makeText(Sample.this,账户成功塑造了++ USER_NAME,Toast.LENGTH_LONG).show();
                        }
                    }
                });
                dialog_signup.show();            }
        });
        键盘=(ButtonFloat)findViewById(R.id.buttonFloat);
        hide_keyboard =(ButtonRectangle)findViewById(R.id.button_2);
        hide_keyboard.setOnClickListener(新View.OnClickListener(){            @覆盖
            公共无效的onClick(视图v)
            {尝试{
                InputMethodManager imm_2 =(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
                imm_2.hideSoftInputFromInputMethod(getCurrentFocus()getWindowToken(),0);
            }
            赶上(例外五)
            {
                Toast.makeText(Sample.this,e.getMessage(),Toast.LENGTH_LONG).show();
            }            }
        });
        keyboard.requestFocus();
        keyboard.setOnClickListener(新View.OnClickListener(){            @覆盖
            公共无效的onClick(视图v){
                对话的对话=新的对话框(Sample.this,MedeQuip,你好......这是一个简单的对话框,检查);
                dialog.setOnAcceptButtonClickListener(新OnClickListener(){                    @覆盖
                    公共无效的onClick(视图v){
                        Toast.makeText(Sample.this,点击接受按钮,1).show();
                    }
                });
                dialog.setOnCancelButtonClickListener(新OnClickListener(){                    @覆盖
                    公共无效的onClick(视图v){
                        Toast.makeText(Sample.this,点击取消按钮,1).show();
                    }
                });
                dialog.show();
            }
        });    }
@覆盖
保护无效的onDestroy(){
    login_database_adapter.close();
    super.onDestroy();
}
}

编辑:
她是code I使用

 保护无效的onCreate(捆绑savedInstanceState){
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.activity_sample);
    login_database_adapter =新LoginDataBaseAdapter(Sample.this);
    login_database_adapter = login_database_adapter.open();
}

这是我的logcat

  15 02-02:28:32.106:E / AndroidRuntime(19240):致命异常:主要
02-02 15:28:32.106:E / AndroidRuntime(19240):工艺:com.example.androidmaterial,PID:19240
02-02 15:28:32.106:E / AndroidRuntime(19240):android.util.AndroidRuntimeException:requestFeature()必须添加内容之前调用
02-02 15:28:32.106:E / AndroidRuntime(19240):在com.android.internal.policy.impl.PhoneWindow.requestFeature(PhoneWindow.java:264)
02-02 15:28:32.106:E / AndroidRuntime(19240):在android.app.Dialog.requestWindowFeature(Dialog.java:1041)
02-02 15:28:32.106:E / AndroidRuntime(19240):在com.gc.materialdesign.widgets.Dialog.onCreate(Dialog.java:56)
02-02 15:28:32.106:E / AndroidRuntime(19240):在android.app.Dialog.dispatchOnCreate(Dialog.java:361)
02-02 15:28:32.106:E / AndroidRuntime(19240):在android.app.Dialog.show(Dialog.java:262)
02-02 15:28:32.106:E / AndroidRuntime(19240):在com.gc.materialdesign.widgets.Dialog.show(Dialog.java:111)
02-02 15:28:32.106:E / AndroidRuntime(19240):在com.example.androidmaterial.Sample $ 1.onClick(Sample.java:81)
02-02 15:28:32.106:E / AndroidRuntime(19240):在com.gc.materialdesign.views.ButtonFlat.onDraw(ButtonFlat.java:83)
02-02 15:28:32.106:E / AndroidRuntime(19240):在android.view.View.draw(View.java:14728)
02-02 15:28:32.106:E / AndroidRuntime(19240):在android.view.View.getDisplayList(View.java:13588)
02-02 15:28:32.106:E / AndroidRuntime(19240):在android.view.View.getDisplayList(View.java:13635)
02-02 15:28:32.106:E / AndroidRuntime(19240):在android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3226)
02-02 15:28:32.106:E / AndroidRuntime(19240):在android.view.View.getDisplayList(View.java:13509)
02-02 15:28:32.106:E / AndroidRuntime(19240):在android.view.View.getDisplayList(View.java:13635)
02-02 15:28:32.106:E / AndroidRuntime(19240):在android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3226)
02-02 15:28:32.106:E / AndroidRuntime(19240):在android.view.View.getDisplayList(View.java:13509)
02-02 15:28:32.106:E / AndroidRuntime(19240):在android.view.View.getDisplayList(View.java:13635)
02-02 15:28:32.106:E / AndroidRuntime(19240):在android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3226)
02-02 15:28:32.106:E / AndroidRuntime(19240):在android.view.View.getDisplayList(View.java:13509)
02-02 15:28:32.106:E / AndroidRuntime(19240):在android.view.View.getDisplayList(View.java:13635)
02-02 15:28:32.106:E / AndroidRuntime(19240):在android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3226)
02-02 15:28:32.106:E / AndroidRuntime(19240):在android.view.View.getDisplayList(View.java:13509)
02-02 15:28:32.106:E / AndroidRuntime(19240):在android.view.View.getDisplayList(View.java:13635)
02-02 15:28:32.106:E / AndroidRuntime(19240):在android.view.HardwareRenderer $ GlRenderer.buildDisplayList(HardwareRenderer.java:1627)
02-02 15:28:32.106:E / AndroidRuntime(19240):在android.view.HardwareRenderer $ GlRenderer.draw(HardwareRenderer.java:1506)
02-02 15:28:32.106:E / AndroidRuntime(19240):在android.view.ViewRootImpl.draw(ViewRootImpl.java:2722)
02-02 15:28:32.106:E / AndroidRuntime(19240):在android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2587)
02-02 15:28:32.106:E / AndroidRuntime(19240):在android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2210)
02-02 15:28:32.106:E / AndroidRuntime(19240):在android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1189)
02-02 15:28:32.106:E / AndroidRuntime(19240):在android.view.ViewRootImpl $ TraversalRunnable.run(ViewRootImpl.java:6223)
02-02 15:28:32.106:E / AndroidRuntime(19240):在android.view.Choreographer $ CallbackRecord.run(Choreographer.java:788)
02-02 15:28:32.106:E / AndroidRuntime(19240):在android.view.Choreographer.doCallbacks(Choreographer.java:591)
02-02 15:28:32.106:E / AndroidRuntime(19240):在android.view.Choreographer.doFrame(Choreographer.java:560)
02-02 15:28:32.106:E / AndroidRuntime(19240):在android.view.Choreographer $ FrameDisplayEventReceiver.run(Choreographer.java:774)
02-02 15:28:32.106:E / AndroidRuntime(19240):在android.os.Handler.handleCallback(Handler.java:808)
02-02 15:28:32.106:E / AndroidRuntime(19240):在android.os.Handler.dispatchMessage(Handler.java:103)
02-02 15:28:32.106:E / AndroidRuntime(19240):在android.os.Looper.loop(Looper.java:193)
02-02 15:28:32.106:E / AndroidRuntime(19240):在android.app.ActivityThread.main(ActivityThread.java:5292)
02-02 15:28:32.106:E / AndroidRuntime(19240):在java.lang.reflect.Method.invokeNative(本机方法)
02-02 15:28:32.106:E / AndroidRuntime(19240):在java.lang.reflect.Method.invoke(Method.java:515)
02-02 15:28:32.106:E / AndroidRuntime(19240):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:824)
02-02 15:28:32.106:E / AndroidRuntime(19240):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:640)
02-02 15:28:32.106:E / AndroidRuntime(19240):在dalvik.system.NativeStart.main(本机方法)


解决方案

问题是由 MaterialDesignLibrary 。由于以下行对话框<引起/ code>类:

  @覆盖
保护无效的onCreate(捆绑savedInstanceState){
 requestWindowFeature(Window.FEATURE_NO_TITLE);
 ....
}

在这里 requestWindowFeature 在调用后调用的setContentView 法活动。

要解决这个问题,您应该删除 requestWindowFeature(Window.FEATURE_NO_TITLE); 对话行类库

I am creating an application that consists of the simple and small registration form pop up in an alert dialog when we click a button. But it was showing an error called android.util.AndroidRuntimeException: requestFeature() must be called before adding content please make it solve

Here i also used the SQLite databse This is my activity

package com.example.androidmaterial;

import com.gc.materialdesign.views.ButtonFlat;
import com.gc.materialdesign.views.ButtonFloat;
import com.gc.materialdesign.views.ButtonRectangle;
import com.gc.materialdesign.widgets.Dialog;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class Sample extends Activity
{
    ButtonFloat keyboard;
    ButtonRectangle hide_keyboard;
    LoginDataBaseAdapter login_database_adapter;
    ButtonFlat database;
    EditText name;

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

        setContentView(R.layout.activity_sample);
        login_database_adapter = new LoginDataBaseAdapter(Sample.this);
        login_database_adapter = login_database_adapter.open();

        database = (ButtonFlat)findViewById(R.id.buttonflat);
        database.setOnClickListener(new View.OnClickListener() 
        {

            @Override
            public void onClick(View v) 
            {
                Dialog dialog_signup = new Dialog(Sample.this,"Registration","Please Fill all the details");
                dialog_signup.setContentView(R.layout.activity_signup);
                final EditText username = (EditText)dialog_signup.findViewById(R.id.editText1);
                final EditText password =  (EditText)dialog_signup.findViewById(R.id.editText2);
                final EditText confirmpass = (EditText)dialog_signup.findViewById(R.id.editText3);
                final EditText name = (EditText)dialog_signup.findViewById(R.id.editText4);
                final ButtonFlat register  = (ButtonFlat)dialog_signup.findViewById(R.id.buttonflat);
                register.setOnClickListener(new View.OnClickListener() 
                {

                    @Override
                    public void onClick(View v) 
                    {
                        String user_name = name.getText().toString(); 
                        String mqs_user_name = username.getText().toString();
                        String mqs_password = password.getText().toString();
                        String mqs_confirmpass =  confirmpass.getText().toString();

                        if(mqs_user_name.equals("")||mqs_password.equals("")||mqs_confirmpass.equals(""))
                        {
                            Toast.makeText(Sample.this, "Some fields are empty please enter all the fields",Toast.LENGTH_LONG).show();
                        }
                        if(mqs_password!=mqs_confirmpass)
                        {
                            Toast.makeText(Sample.this, "Passwords did not match",Toast.LENGTH_LONG).show();
                        }
                        else
                        {

                            login_database_adapter.insertEntry(mqs_user_name, mqs_password);
                            Toast.makeText(Sample.this, "Account Successfully created"+" "+user_name,Toast.LENGTH_LONG).show();
                        }


                    }
                });
                dialog_signup.show();

            }
        });


        keyboard = (ButtonFloat)findViewById(R.id.buttonFloat);
        hide_keyboard = (ButtonRectangle)findViewById(R.id.button_2);
        hide_keyboard.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) 
            {try{
                InputMethodManager imm_2 = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
                imm_2.hideSoftInputFromInputMethod(getCurrentFocus().getWindowToken(),0);
            }
            catch(Exception e)
            {
                Toast.makeText(Sample.this, e.getMessage(), Toast.LENGTH_LONG).show();
            }

            }
        });
        keyboard.requestFocus();
        keyboard.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                Dialog dialog = new Dialog(Sample.this, "MedeQuip", "Hello...This is a sample dialog box check");
                dialog.setOnAcceptButtonClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        Toast.makeText(Sample.this, "Click accept button", 1).show();
                    }
                });
                dialog.setOnCancelButtonClickListener(new OnClickListener() {

                    @Override
                    public void onClick(View v) {
                        Toast.makeText(Sample.this, "Click cancel button", 1).show();
                    }
                });
                dialog.show();
            }
        });

    }
@Override
protected void onDestroy() {


    login_database_adapter.close();
    super.onDestroy();
}
}

EDIT: her is the code i use

protected void onCreate(Bundle savedInstanceState){ 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_sample); 
    login_database_adapter = new LoginDataBaseAdapter(Sample.this);  
    login_database_adapter = login_database_adapter.open();
}

This is my Logcat

02-02 15:28:32.106: E/AndroidRuntime(19240): FATAL EXCEPTION: main
02-02 15:28:32.106: E/AndroidRuntime(19240): Process: com.example.androidmaterial, PID: 19240
02-02 15:28:32.106: E/AndroidRuntime(19240): android.util.AndroidRuntimeException: requestFeature() must be called before adding content
02-02 15:28:32.106: E/AndroidRuntime(19240):    at com.android.internal.policy.impl.PhoneWindow.requestFeature(PhoneWindow.java:264)
02-02 15:28:32.106: E/AndroidRuntime(19240):    at android.app.Dialog.requestWindowFeature(Dialog.java:1041)
02-02 15:28:32.106: E/AndroidRuntime(19240):    at com.gc.materialdesign.widgets.Dialog.onCreate(Dialog.java:56)
02-02 15:28:32.106: E/AndroidRuntime(19240):    at android.app.Dialog.dispatchOnCreate(Dialog.java:361)
02-02 15:28:32.106: E/AndroidRuntime(19240):    at android.app.Dialog.show(Dialog.java:262)
02-02 15:28:32.106: E/AndroidRuntime(19240):    at com.gc.materialdesign.widgets.Dialog.show(Dialog.java:111)
02-02 15:28:32.106: E/AndroidRuntime(19240):    at com.example.androidmaterial.Sample$1.onClick(Sample.java:81)
02-02 15:28:32.106: E/AndroidRuntime(19240):    at com.gc.materialdesign.views.ButtonFlat.onDraw(ButtonFlat.java:83)
02-02 15:28:32.106: E/AndroidRuntime(19240):    at android.view.View.draw(View.java:14728)
02-02 15:28:32.106: E/AndroidRuntime(19240):    at android.view.View.getDisplayList(View.java:13588)
02-02 15:28:32.106: E/AndroidRuntime(19240):    at android.view.View.getDisplayList(View.java:13635)
02-02 15:28:32.106: E/AndroidRuntime(19240):    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3226)
02-02 15:28:32.106: E/AndroidRuntime(19240):    at android.view.View.getDisplayList(View.java:13509)
02-02 15:28:32.106: E/AndroidRuntime(19240):    at android.view.View.getDisplayList(View.java:13635)
02-02 15:28:32.106: E/AndroidRuntime(19240):    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3226)
02-02 15:28:32.106: E/AndroidRuntime(19240):    at android.view.View.getDisplayList(View.java:13509)
02-02 15:28:32.106: E/AndroidRuntime(19240):    at android.view.View.getDisplayList(View.java:13635)
02-02 15:28:32.106: E/AndroidRuntime(19240):    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3226)
02-02 15:28:32.106: E/AndroidRuntime(19240):    at android.view.View.getDisplayList(View.java:13509)
02-02 15:28:32.106: E/AndroidRuntime(19240):    at android.view.View.getDisplayList(View.java:13635)
02-02 15:28:32.106: E/AndroidRuntime(19240):    at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:3226)
02-02 15:28:32.106: E/AndroidRuntime(19240):    at android.view.View.getDisplayList(View.java:13509)
02-02 15:28:32.106: E/AndroidRuntime(19240):    at android.view.View.getDisplayList(View.java:13635)
02-02 15:28:32.106: E/AndroidRuntime(19240):    at android.view.HardwareRenderer$GlRenderer.buildDisplayList(HardwareRenderer.java:1627)
02-02 15:28:32.106: E/AndroidRuntime(19240):    at android.view.HardwareRenderer$GlRenderer.draw(HardwareRenderer.java:1506)
02-02 15:28:32.106: E/AndroidRuntime(19240):    at android.view.ViewRootImpl.draw(ViewRootImpl.java:2722)
02-02 15:28:32.106: E/AndroidRuntime(19240):    at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2587)
02-02 15:28:32.106: E/AndroidRuntime(19240):    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2210)
02-02 15:28:32.106: E/AndroidRuntime(19240):    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1189)
02-02 15:28:32.106: E/AndroidRuntime(19240):    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6223)
02-02 15:28:32.106: E/AndroidRuntime(19240):    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:788)
02-02 15:28:32.106: E/AndroidRuntime(19240):    at android.view.Choreographer.doCallbacks(Choreographer.java:591)
02-02 15:28:32.106: E/AndroidRuntime(19240):    at android.view.Choreographer.doFrame(Choreographer.java:560)
02-02 15:28:32.106: E/AndroidRuntime(19240):    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:774)
02-02 15:28:32.106: E/AndroidRuntime(19240):    at android.os.Handler.handleCallback(Handler.java:808)
02-02 15:28:32.106: E/AndroidRuntime(19240):    at android.os.Handler.dispatchMessage(Handler.java:103)
02-02 15:28:32.106: E/AndroidRuntime(19240):    at android.os.Looper.loop(Looper.java:193)
02-02 15:28:32.106: E/AndroidRuntime(19240):    at android.app.ActivityThread.main(ActivityThread.java:5292)
02-02 15:28:32.106: E/AndroidRuntime(19240):    at java.lang.reflect.Method.invokeNative(Native Method)
02-02 15:28:32.106: E/AndroidRuntime(19240):    at java.lang.reflect.Method.invoke(Method.java:515)
02-02 15:28:32.106: E/AndroidRuntime(19240):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:824)
02-02 15:28:32.106: E/AndroidRuntime(19240):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:640)
02-02 15:28:32.106: E/AndroidRuntime(19240):    at dalvik.system.NativeStart.main(Native Method)

解决方案

Problem is caused by MaterialDesignLibrary.due to following line in Dialog class:

@Override
protected void onCreate(Bundle savedInstanceState) {
 requestWindowFeature(Window.FEATURE_NO_TITLE);
 ....
}

here requestWindowFeature is called after calling setContentView method in Activity.

To fix this issue you should remove requestWindowFeature(Window.FEATURE_NO_TITLE); line from Dialog class of library

这篇关于如何解决requestFeature()必须在Android中添加内容之前被调用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆