2017-04-14 75 views
0

顯示,由於當我點擊,而不是顯示的警告對話框上的任何列表視圖行,它提供了一個IllegalStateException異常。 它說使用Theme.AppCompat主題。我對這件事不太瞭解,而且我是新人,任何人都可以幫助我理解所有這些appcompat活動以及造成這種麻煩的原因。警告對話框不IllegalStateException異常

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(); 
} 

}

回答