Pra*_*ukh 7 android android-appcompat android-theme android-alertdialog android-actionbar-compat
我有一个Activity延伸ActionBarActivity.每当我尝试在其中创建一个时AlertDialog,就会在创建对话框的行中崩溃,从而产生此错误
java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
Run Code Online (Sandbox Code Playgroud)
但我已经在使用Appcompat主题,Theme.AppCompat.Light.NoActionBar因为我正在使用工具栏.这可能是什么原因?这是我的活动:
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.support.v7.app.AlertDialog;
import android.support.v7.widget.Toolbar;
import android.view.Menu;
import android.view.MenuItem;
public class MyActivity extends ActionBarActivity {
Toolbar toolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_comments);
toolbar = (Toolbar)findViewById(R.id.tool_bar_comment);
setSupportActionBar(toolbar);
AlertDialog alertDialog;
alertDialog = new AlertDialog.Builder(getApplicationContext()).create();
alertDialog.setTitle("Network error");
alertDialog.setMessage("Check network connection and try again.");
alertDialog.setButton(AlertDialog.BUTTON_POSITIVE, "ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
finish();
}
});
alertDialog.show();
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的主要文件:
<application
android:name=".Networking.AppController"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
...
<activity
android:name=".MyActivity"
android:label="@string/myactivity"
>
</activity>
</application>
Run Code Online (Sandbox Code Playgroud)
而且,这是styles.xml
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- Customize your theme here. -->
</style>
Run Code Online (Sandbox Code Playgroud)
将android:theme属性添加到MainFest中的活动根本没有帮助.
<activity
android:name=".MyActivity"
android:label="@string/myactivity"
android:theme="@style/Theme.AppCompat.NoActionBar"
>
Run Code Online (Sandbox Code Playgroud)
小智 27
我无法重现同样的错误.但是,我认为问题是传递给AlertDialog.Builder构造函数的上下文.实际上,应该将活动上下文传递给它.
尝试更换此行
alertDialog = new AlertDialog.Builder(getApplicationContext()).create();
Run Code Online (Sandbox Code Playgroud)
用这个
alertDialog = new AlertDialog.Builder(this).create();
Run Code Online (Sandbox Code Playgroud)
如果这解决了问题,请告诉我.
Luf*_*ffy 10
我通过更改导入解决了这个问题:
android.support.v7.app.AlertDialog
to
android.app.AlertDialog
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8045 次 |
| 最近记录: |