使用Android Studio在listView上创建AlertDialog时出现Theme.AppCompact问题
我正在创建一个应用程序,它从解析数据库中提取数据,并将其显示在列表中。我想在列表上设置一个点击器,当你点击一个项目时,会弹出一个警告对话框,确认是/否,然后进入文本输入 我目前有listclicking/alert处理程序的代码使用Android Studio在listView上创建AlertDialog时出现Theme.AppCompact问题,android,Android,我正在创建一个应用程序,它从解析数据库中提取数据,并将其显示在列表中。我想在列表上设置一个点击器,当你点击一个项目时,会弹出一个警告对话框,确认是/否,然后进入文本输入 我目前有listclicking/alert处理程序的代码 public void getClicker(){ list.setClickable(true); list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void getClicker(){
list.setClickable(true);
list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Object o = list.getItemAtPosition(position);
Toast.makeText(ListPull.this, o.toString(), Toast.LENGTH_LONG).show();
AlertDialog.Builder builder = new AlertDialog.Builder(getApplicationContext());
builder.setTitle("Confirm");
builder.setMessage("Are you sure?");
builder.setPositiveButton("YES", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
AlertDialog.Builder builder = new AlertDialog.Builder(getApplicationContext());
builder.setTitle("Input Found Location");
// Set up the input
final EditText input = new EditText(getApplicationContext());
// Specify the type of input expected; this, for example, sets the input as a password, and will mask the text
input.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
builder.setView(input);
// Set up the buttons
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
foundinput = input.getText().toString();
}
});
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
AlertDialog alert = builder.create();
alert.show();
}
});
builder.setNegativeButton("NO", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// Do nothing
dialog.dismiss();
}
});
AlertDialog alert = builder.create();
alert.show();
}
});
}
我已经检查了所有的主题,现在已经将它们设置为Theme.AppCompact,但它仍然给出了错误。除了必须测试clicker并确定它是正确的和有效的之外,因为我可以让它生成我所单击的字符串的祝酒词不要使用应用程序上下文来膨胀视图、构建视图或构建对话框<代码>新建AlertDialog.Builder(getApplicationContext())正在终止它
Context Context=view.getContext()
可能是一个不错的选择。不要使用应用程序上下文来膨胀视图、构造视图或构造对话框<代码>新建AlertDialog.Builder(getApplicationContext())正在终止它
Context Context=view.getContext()
可能是一个不错的选择。不要使用应用程序上下文来膨胀视图、构造视图或构造对话框<代码>新建AlertDialog.Builder(getApplicationContext())正在终止它Context Context=view.getContext()
可能是一个不错的选择。我发现最好的方法是将view.getContext()
放在new AlertDialog.Builder(view.getContext())
中,但它完全可以工作,谢谢。不要使用应用程序上下文来膨胀视图、构造视图或构造对话框<代码>新建AlertDialog.Builder(getApplicationContext())正在终止它Context Context=view.getContext()
可能是一个不错的选择。我发现最好的方法是将view.getContext()
放在new AlertDialog.Builder(view.getContext())
中,但它完全起作用了,谢谢。谢谢这非常有效,我刚把view.getContext()放进去
在AlertDialog.Builder(view.getContext())的内部
谢谢这很好地工作了我刚刚把view.getContext()
放在AlertDialog.Builder(view.getContext())的内部
java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.
at android.support.v7.app.AppCompatDelegateImplV7.createSubDecor(AppCompatDelegateImplV7.java:310)
at android.support.v7.app.AppCompatDelegateImplV7.ensureSubDecor(AppCompatDelegateImplV7.java:279)
at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:253)
at android.support.v7.app.AppCompatDialog.setContentView(AppCompatDialog.java:76)
at android.support.v7.app.AlertController.installContent(AlertController.java:213)
at android.support.v7.app.AlertDialog.onCreate(AlertDialog.java:240)
at android.app.Dialog.dispatchOnCreate(Dialog.java:394)
at android.app.Dialog.show(Dialog.java:295)
at com.example.sammercer.muskateersfinal.ListPull$4.onItemClick(ListPull.java:262)
at android.widget.AdapterView.performItemClick(AdapterView.java:310)
at android.widget.AbsListView.performItemClick(AbsListView.java:1145)
at android.widget.AbsListView$PerformClick.run(AbsListView.java:3042)
at android.widget.AbsListView.onTouchUp(AbsListView.java:3891)
at android.widget.AbsListView.onTouchEvent(AbsListView.java:3656)
at android.view.View.dispatchTouchEvent(View.java:9294)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2547)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2240)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2553)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2553)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2553)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2553)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2553)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2553)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2553)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2553)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2254)
at com.android.internal.policy.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2403)
at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1737)
at android.app.Activity.dispatchTouchEvent(Activity.java:2765)
at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:60)
at com.android.internal.policy.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2364)
at android.view.View.dispatchPointerEvent(View.java:9514)
at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:4230)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:4096)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3642)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3695)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3661)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3787)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3669)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3844)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3642)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3695)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3661)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3669)