Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/221.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 由于IllegalStateException,警报对话框未显示_Java_Android - Fatal编程技术网

Java 由于IllegalStateException,警报对话框未显示

Java 由于IllegalStateException,警报对话框未显示,java,android,Java,Android,当我单击任何列表视图行时,它不会显示警报对话框,而是显示一个非法状态异常。 它说使用主题。AppCompat主题。我对此不太了解,而且我是新来的。请任何人帮助我了解所有这些appcompat活动以及出现此问题的原因 java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity. at android.supp

当我单击任何列表视图行时,它不会显示警报对话框,而是显示一个非法状态异常。 它说使用主题。AppCompat主题。我对此不太了解,而且我是新来的。请任何人帮助我了解所有这些appcompat活动以及出现此问题的原因

java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
                  at android.support.v7.app.AppCompatDelegateImplV9.createSubDecor(AppCompatDelegateImplV9.java:355)
                  at android.support.v7.app.AppCompatDelegateImplV9.ensureSubDecor(AppCompatDelegateImplV9.java:324)
                  at android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:285)
                  at android.support.v7.app.AppCompatDialog.setContentView(AppCompatDialog.java:83)
                  at android.support.v7.app.AlertController.installContent(AlertController.java:225)
                  at android.support.v7.app.AlertDialog.onCreate(AlertDialog.java:257)
                  at android.app.Dialog.dispatchOnCreate(Dialog.java:397)
                  at android.app.Dialog.show(Dialog.java:298)
                  at com.example.stark.messenger.showDatabase$1.onItemClick(showDatabase.java:93)
                  at android.widget.AdapterView.performItemClick(AdapterView.java:310)
                  at android.widget.AbsListView.performItemClick(AbsListView.java:1145)
                  at android.widget.AbsListView$PerformClick.run(AbsListView.java:3081)
                  at android.widget.AbsListView$3.run(AbsListView.java:3947)
                  at android.os.Handler.handleCallback(Handler.java:739)
                  at android.os.Handler.dispatchMessage(Handler.java:95)
                  at android.os.Looper.loop(Looper.java:148)
                  at android.app.ActivityThread.main(ActivityThread.java:5441)
                  at java.lang.reflect.Method.invoke(Native Method)
                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:738)
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:628)
我的主要活动代码是:

import android.content.DialogInterface;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;

import java.util.ArrayList;


public class showDatabase extends AppCompatActivity {
SQLiteOpenHelper expensedatabase;
SQLiteDatabase db;
Cursor cursor;
ListView lv;
ArrayList<DataModel> dataModels;
private static CustomAdapter adapter;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_show_database);
    lv=(ListView) findViewById(R.id.lv_custom_list);
    expensedatabase = new ExpenseDatabase(this);
    db = expensedatabase.getReadableDatabase();

}
protected void onStart()
{
    super.onStart();
    dataModels = new ArrayList<DataModel>();
    dataModels.clear();
    cursor = db.rawQuery("select * from ExpenseRecord where strftime('%Y-%m', DATE) = '2017-04';",null);
    if (cursor != null && cursor.getCount() != 0) {
    if (cursor.moveToFirst()) {
        do {
            DataModel datamodelItems = new DataModel();
            datamodelItems.setPayee(cursor.getString(cursor
                    .getColumnIndex("PAYEE")));
            datamodelItems.setAmount(cursor.getString(cursor
                    .getColumnIndex("AMOUNT")));
            datamodelItems.setCategory(cursor.getString(cursor
                    .getColumnIndex("CATEGORY")));
            datamodelItems.setNotes(cursor.getString(cursor
                    .getColumnIndex("NOTES")));
            datamodelItems.setDate(cursor.getString(cursor
                    .getColumnIndex("DATE")));
            datamodelItems.setTime(cursor.getString(cursor
                    .getColumnIndex("TIME")));
            dataModels.add(datamodelItems);

        } while (cursor.moveToNext());
    }
        }
    cursor.close();
    CustomAdapter customadapter = new CustomAdapter(dataModels,getApplicationContext());
    lv.setAdapter(customadapter);

    lv.setOnItemClickListener(itemlistener);
}

AdapterView.OnItemClickListener itemlistener = new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

        final android.support.v7.app.AlertDialog.Builder builder = new android.support.v7.app.AlertDialog.Builder(getApplicationContext());
        builder.setView(R.layout.dialog_box)
                .setPositiveButton("Update", new DialogInterface.OnClickListener() {
                    public void onClick(final DialogInterface dialog, final int id) {
                        //update click
                    }
                })
                .setNeutralButton("Disable", new DialogInterface.OnClickListener() {
                    public void onClick(final DialogInterface dialog, final int id) {
                        //disable click
                    }
                })
                .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
                    public void onClick(final DialogInterface dialog, final int id) {
                        //cancel click
                    }
                });
        if(position>-1) {
            android.support.v7.app.AlertDialog alert = builder.create();
            alert.show();
        }

    }
};

public void onDestroy(){
    super.onDestroy();
    cursor.close();
    db.close();
}
导入android.content.DialogInterface;
导入android.database.Cursor;
导入android.database.sqlite.SQLiteDatabase;
导入android.database.sqlite.SQLiteOpenHelper;
导入android.os.Bundle;
导入android.support.v7.app.AppActivity;
导入android.view.view;
导入android.widget.AdapterView;
导入android.widget.ListView;
导入java.util.ArrayList;
公共类showDatabase扩展了AppCompatActivity{
SQLiteOpenHelper数据库;
sqlitedb数据库;
光标;
ListView lv;
ArrayList数据模型;
专用静态适配器;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u show\u数据库);
lv=(ListView)findViewById(R.id.lv\u自定义\u列表);
expensedatabase=新的expensedatabase(本);
db=expensedatabase.getReadableDatabase();
}
受保护的void onStart()
{
super.onStart();
dataModels=新的ArrayList();
dataModels.clear();
cursor=db.rawQuery(“从ExpenseRecord中选择*,其中strftime(“%Y-%m”,日期)='2017-04';”,null);
if(cursor!=null&&cursor.getCount()!=0){
if(cursor.moveToFirst()){
做{
DataModel datamodelItems=新的DataModel();
datamodelItems.setPayee(游标)getString(游标
.getColumnIndex(“收款人”);
datamodelItems.setAmount(游标)getString(游标
.getColumnIndex(“金额”);
datamodelItems.setCategory(游标)getString(游标
.getColumnIndex(“类别”);
datamodelItems.setNotes(游标.getString(游标
.getColumnIndex(附注);
datamodelItems.setDate(游标)getString(游标
.getColumnIndex(“日期”);
datamodelItems.setTime(游标)getString(游标
.getColumnIndex(“时间”);
添加(datamodelItems);
}while(cursor.moveToNext());
}
}
cursor.close();
CustomAdapter CustomAdapter=新的CustomAdapter(dataModels,getApplicationContext());
lv.setAdapter(自定义适配器);
lv.setOnItemClickListener(itemlistener);
}
AdapterView.OnItemClickListener itemlistener=新AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
final android.support.v7.app.AlertDialog.Builder=新的android.support.v7.app.AlertDialog.Builder(getApplicationContext());
builder.setView(R.layout.dialog\u框)
.setPositiveButton(“更新”,新的DialogInterface.OnClickListener(){
public void onClick(最终对话框接口对话框,最终int id){
//更新点击
}
})
.setNeutralButton(“禁用”,新建DialogInterface.OnClickListener(){
public void onClick(最终对话框接口对话框,最终int id){
//禁用单击
}
})
.setNegativeButton(“取消”,新建DialogInterface.OnClickListener()){
public void onClick(最终对话框接口对话框,最终int id){
//取消单击
}
});
如果(位置>-1){
android.support.v7.app.AlertDialog alert=builder.create();
alert.show();
}
}
};
公共空间{
super.ondestory();
cursor.close();
db.close();
}
}

尝试添加

android:theme="@style/Theme.AppCompat.Light" 
指向AndroidManifest.xml文件中的应用程序标记

正如本文所建议的


太棒了,你能选择它作为解决方案吗?