如何解决requestFeature()必须在Android中添加内容之前被调用 [英] How to solve requestFeature() must be called before adding content in 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屋!