当用户在AlertDialog中单击"确定"时,我想将变量传递给外部函数.我正在尝试这个例子,但它不会识别变量(Yup).
public final void deleteBookmark(Cursor cur, int pos) {
//fetching info
((Cursor) cur).moveToPosition(pos);
String bookmark_id = ((Cursor) cur).getString(((Cursor) cur).getColumnIndex(Browser.BookmarkColumns._ID));
String bookmark_title = ((Cursor) cur).getString(((Cursor) cur).getColumnIndex(Browser.BookmarkColumns.TITLE));
//asking user to approve delete request
AlertDialog alertDialog = new AlertDialog.Builder(Dmarks.this).create();
alertDialog.setTitle("Delete" + " " + bookmark_title);
alertDialog.setIcon(R.drawable.icon);
alertDialog.setMessage("Are you sure you want to delete this Bookmark?");
alertDialog.setButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
**String Yup = "yes";**
} });
alertDialog.setButton2("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) { …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用AlertDialog中的Button来查看网页.
问题是这个AlertDialog位于一个扩展ItemizedOverlay并且不扩展Activity的类中,所以Eclipse强调它并给出以下错误:
方法startActivity()未定义类型new DialogInterface.OnClickListener(){}
我想从PositiveButton,NeutralButton和NegativeButton发起活动,但我无法做到.
如果你需要更多的上下文,主Activity是一个带有一些ItemizedOverlay的MapView,我想发布一个带有方向或其他活动的网页.
我正在创建一个自定义对话框(alertdialog不够灵活,不能满足我的需求).我希望它看起来像一个AlertDialog,具有良好的已知的AlertDialog标题(见下图).
我在自定义对话框中也有一个列表视图,我希望它看起来像AlertDialog的列表视图.我怎么能这样做?
到目前为止,我在attr中找到了alertDialogTheme和alertDialogStyle.上课,但我不知道如何使用它.
使用自定义对话框应该是什么样子:

看起来像什么(黑色背景,错误的标题): 
我的布局很基本,看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout_root"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:padding="10dp" >
<ListView
android:id="@+id/list"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
listview包含使用此布局的项目
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:baselineAligned="false"
android:gravity="center_vertical"
android:orientation="horizontal" >
<ImageView
android:id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:src="@drawable/icon_noimage" />
<TextView
android:id="@+id/text"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:layout_weight="1"
android:ellipsize="end"
android:singleLine="true"
android:textColor="#ffffff"
android:textSize="18dp" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
--->使用自定义视图的alerdialog解决方法,但现在我遇到了以下问题:

该应用程序拦截短信息并显示一条Dialog消息.
但是我无法Dialog在Test课堂上解决我的错误.我究竟做错了什么?
(我还包括了我的其他2个文件).
Eclipse中显示的错误: AlertDialog.Builder(Test) is undefined
test.java
package com.example.firstapp;
import android.app.AlertDialog;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
public class Test extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
//---get the SMS message passed in---
Bundle bundle = intent.getExtras();
SmsMessage[] msgs = null;
String str = "";
if (bundle != null)
{
//---retrieve the SMS message received---
Object[] pdus = (Object[]) bundle.get("pdus");
msgs = new SmsMessage[pdus.length];
for …Run Code Online (Sandbox Code Playgroud) 如何将getSupportFragmentManager()传递给AccountAuthenticatorActivity中的外部库?
我需要使用android-styled-dialogs设置自定义对话框:https://github.com/inmite/android-styled-dialogs
android accountmanager android-alertdialog android-support-library
如果您可以帮助我,我将提供一个包含3个选项的单选警报对话框。我最初禁用了NEXT按钮(未选择任何选项)。当用户选择任何选项时,我要启用“下一步”按钮。这是我尝试的代码。
int involvementInIncident;
case DIALOG_ADD_A_PERSON_INVOLVEMENT_ONE:
builder.setTitle("Involvement in this Incident");
builder.setSingleChoiceItems(incidentInvolvement, -1,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
involvementInIncident = which;
//involvementInIncident = ((AlertDialog)dialog).getListView().getCheckedItemPosition();
Toast.makeText(getApplicationContext(),""+ involvementInIncident, Toast.LENGTH_SHORT).show();
}
});
builder.setPositiveButton("Next",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//Toast.makeText(getApplicationContext(),""+ involvementInIncident, Toast.LENGTH_SHORT).show();
showDialog(DIALOG_ADD_A_PERSON_PERSON_TYPE_TWO);
}
});
builder.setNegativeButton("Cancel",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
AlertDialog alertInvolvement = builder.create();
alertInvolvement.show();
final Button buttonPositiveInvolvement = alertInvolvement.getButton(AlertDialog.BUTTON_POSITIVE);
buttonPositiveInvolvement.setEnabled(false);
if(involvementInIncident == 0 …Run Code Online (Sandbox Code Playgroud) 我有一个对话框片段,在WidgetConfig活动运行时显示.该对话框显示用户可以选择某些项目的列表.我希望此对话框是透明的,以便您可以在对话框的背景中看到主屏幕.这就是我目前在WidgetConfig活动中所做的事情:
DialogFragment dialog = new myChooserDialog();
getWindow().requestFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
dialog.show(getFragmentManager(), "dialog");
Run Code Online (Sandbox Code Playgroud)
编辑:myChooserDialog的代码:
public class MyChooserDialog extends DialogFragment{
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
choices = getResources().getStringArray(R.array.city_choices);
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle(getResources().getString(R.string.widget_dialog_chooser_title));
builder.setPositiveButton(getResources().getString(R.string.widget_dialog_chooser_posBtn), this);
builder.setNegativeButton(getResources().getString(R.string.widget_dialog_chooser_negBtn), this);
builder.setSingleChoiceItems(choices, -1, this);
return builder.create();
}
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which) {
case DialogInterface.BUTTON_POSITIVE:
//doing magic tricks
break;
case DialogInterface.BUTTON_NEGATIVE:
dialog.dismiss();
break;
default:
//more magic
break;
}
}
}
Run Code Online (Sandbox Code Playgroud)
目前,背景全黑.我在这做错了什么?
马库斯
是否可以使对话框消息的一部分成为链接?并将点击侦听器分配给该部分?
假设我有一个这样的对话框:
String message = "Hello, click here for more info";
String messageClickable = "click here";
new AlertDialog.Builder(this)
.setMessage(message)
.setPositiveButton("Ok", null)
.show();
Run Code Online (Sandbox Code Playgroud)
如何使messageClickable零件可点击?我研究了该课程,Linkify但我只能找到addLinks适用于实际链接或电话号码等的方法。
我更新AppCompat到新发布的版本22.1.0并将我更改AlertDialog为support.v7.app.AlertDialog.但是在Lollipop设备上,它会抛出以下异常dismissDialog().
java.lang.NullPointerException: attempt to invoke virtual method 'java.lang.Class java.lang.Object.getClass()' on a null object reference
at android.support.v7.internal.app.WindowDecorActionBar.getDecorToolbar(WindowDecorActionBar.java:248)
at android.support.v7.internal.app.WindowDecorActionBar.init(WindowDecorActionBar.java:201)
at android.support.v7.internal.app.WindowDecorActionBar.<init>(WindowDecorActionBar.java:184)
at android.support.v7.app.AppCompatDeleg ateImplV7.cre ateSupportActionBar(AppCompatDelegateImplV7.java:176)
at android.support.v7.app.AppCompatDelegateImplBase.getSupportActionBar(AppCompatDelegateImplBase.java:85)
at android.support.v7.app.AppCompatDelegateImplV7.onStop(AppCompatDeleg ateImplV7.java:221)
at android.support.v7.app.AppCompatDialog.onStop(AppCompatDialog.java:108)
at android.app.Dialog.dismissDialog(Dialog.java:438)
at android.app.Dialog.dismiss(Dialog.java:414)
at android.support.v7.app.AlertController$ButtonHandler.handleMessage(AlertController.java:157)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:5834)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1388)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1183)
Run Code Online (Sandbox Code Playgroud)
我如何解决它?
(较低版本的设备似乎运行良好.这只发生在Lollipop)
+
我没有dismiss()在我的代码中明确调用.当按钮被后退按钮或正/负按钮关闭时,该对话框将抛出异常.
++这是我使用v7.app.AlertDialog的代码.谢谢.
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.support.v4.app.DialogFragment; …Run Code Online (Sandbox Code Playgroud) 首先我要说的是,这是通过查看教程来完成的.这是我从广播接收器呼叫的自定义警报对话活动部分.唯一的问题是后退按钮单击.一旦Alert对话框活动开始,当我按下后退按钮时它就会关闭.
public class AlertDialogActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
this.setFinishOnTouchOutside(false);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);
setContentView(R.layout.activity_inmsgdialog);
}
@Override
public void onBackPressed()
{
super.onBackPressed();
Toast.makeText(getApplicationContext(), "Back Pressed", Toast.LENGTH_SHORT).show();
}
}
Run Code Online (Sandbox Code Playgroud)
我试过了onBackPressed,我能看到吐司的消息,但活动正在关闭.