簡體   English   中英

由於IllegalStateException而未顯示警報對話框

[英]Alert Dialog not displaying due to IllegalStateException

當我單擊任何列表視圖行時,沒有顯示警告對話框,而是給出了IllegalStateException 它說要使用Theme.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:theme="@style/Theme.AppCompat.Light" 

到AndroidManifest.xml文件中的應用程序標簽。

正如這篇文章中所建議的。

您需要在此活動中使用Theme.AppCompat主題(或后代)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM