我有一个我想要创建的弹出窗口,它有3个选择.(阻止,取消阻止,卸载).下面我有一个确认|取消按钮.我想看看哪个按钮被按下,并根据它将显示与选择对应的吐司.我写了一些代码来展示我想要做的事情.显然,if items [item] == Block将不起作用,但在简化的意义上,这正是我想要做的.有人可以告诉我如何编写OnClickListener以捕获单击的按钮以及单击确认时如何区分它?
码:
package com.popup;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;
public class PopupActivity extends Activity {
String TAG = "PopUpActivity";
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
BlockUnblockUninstallPopUp("");
String TAG = "PopUpActivity";
}
public void BlockUnblockUninstallPopUp(final String PackageName){
//Items you would like to list as options.
final CharSequence[] items = {"Block", "UnBlock", "Uninstall"};
String flag = null;
AlertDialog.Builder builder = new AlertDialog.Builder(PopupActivity.this);
//Title of Popup
builder.setTitle("What would you like to do?"); …Run Code Online (Sandbox Code Playgroud) 我正在给AlertDialog充气让用户发送评论.相当简单.但是我得到了这个Lint警告:
布局使用错误的按钮顺序API> = 14:创建一个相反顺序的layout-v14/chat_comment_dialog.xml文件:取消按钮应该在左边(是"@ string/send | Cancel",应该是"取消| @"字符串/发送")
所以,是的,这是解决方案,为API> = 14创建一个特定的布局并反转顺序.但是....真的吗?这真的是官方的建议吗?在某些设备中设置一个订单而在其他设备中设置不同的订单?作为用户,我会感到非常困惑.我是否应该忽略这个Lint建议,或者以其他方式,对一组设备遵循这种新模式(我认为相当混乱)
无论如何,这是布局:
<?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="wrap_content"
android:orientation="vertical"
android:padding="8dp" >
<EditText
android:id="@+id/username"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/username"
android:singleLine="true" />
<EditText
android:id="@+id/message"
android:layout_width="match_parent"
android:layout_height="180dp"
android:gravity="top|left"
android:hint="@string/review" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:paddingRight="4dp"
android:text="@string/send"
android:textSize="18sp" />
<Button
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:paddingLeft="4dp"
android:text="@android:string/cancel"
android:textSize="18sp" />
</LinearLayout>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
顺便说一下,我必须在XML中而不是在AlertDialog.Builder中膨胀按钮(也许这样按钮会自动自行排序),因为你设置为Builder的deafult按钮的任何onClickListener都会忽略对话框,而我必须避免这种行为来自己控制Dialog.
最近我按照了如何创建警告对话框的教程,当我点击删除按钮时,它应该在删除之前向我显示警告,但它会崩溃.有人能告诉我我的错误在哪里吗?
以下是我的代码:
// Delete button click event
btnDeleteEvent.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
// alerting user before deleting event
AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
getApplicationContext());
// set title
alertDialogBuilder.setTitle("Warning!");
// set dialog message
alertDialogBuilder
.setMessage("Are you sure to delete event?")
.setCancelable(false)
.setPositiveButton("Yes",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int id) {
// if yes, deleting event in background
// thread
new DeleteEvent().execute();
}
})
.setNegativeButton("No",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int id) {
// if …Run Code Online (Sandbox Code Playgroud) 我有一个alertdialog任何选项和2个按钮.当我按下第二个按钮(仅停止声音)时,我不想关闭对话框.
是否有任何属性可以保持对话框打开?
非常感谢!
码:
public void creaDialogTo(){
final String[] tonos = {"thinks.mp3", "life.mp3", "war.mp3"};
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Select");
builder.setCancelable(false);
builder.setSingleChoiceItems(tones, -1,new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
tone=tones[item];
sound1 =new SoundManager(getApplicationContext());
sound1.loadSound(tones[item]);
}
});
builder.setPositiveButton("Confirm",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
pref.setTone(tone);
sound1.stopsound();
}
});
builder.setNeutralButton("Stop sound",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
sound1.stopsound();
}
});
AlertDialog alert = builder.create();
alert.show();
}
Run Code Online (Sandbox Code Playgroud) 我必须开发一个Android应用程序.
我创建了一个警告对话框.如果我必须旋转方向意味着警报对话框消失.
但是我想在方向改变时显示警告对话框.
@Override
public void onConfigurationChanged ( Configuration newConfig )
{
super.onConfigurationChanged(newConfig);
try
{
MainActivity.editCalled = true;
Intent in = new Intent(AndroidListFragmentActivity.this, AndroidListFragmentActivity.class);
startActivity(in);
finish();
}
catch (Exception e)
{
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud)
在这里,我使用了两个片段......
在第二个片段中有一个警告对话框:
ImageView share = (ImageView) findViewById(R.id.imageView5);
share.setOnClickListener(new OnClickListener()
{
public void onClick ( View v )
{
final CharSequence[] items =
{
"Facebook", "Twitter", "Email"
};
AlertDialog.Builder builder = new AlertDialog.Builder(SubCate.this);
builder.setTitle("Share Via:");
builder.setItems(items, new DialogInterface.OnClickListener()
{
public void onClick ( DialogInterface dialog , int …Run Code Online (Sandbox Code Playgroud) 我正在使用RecyclerView,并且只要长按RecyclerView中的项目,就想打开AlertDialog.
在RecyclerView的ViewHolder中,我实现了clicklistener
@Override
public boolean onLongClick(View v) {
//Open Alert dialog to delete item
AlertDialog.Builder alert = new AlertDialog.Builder(context);
...
}
Run Code Online (Sandbox Code Playgroud)
我可以在这里阅读:http://goo.gl/Kd1c7i一个需要通过"MyActivity.this"到AlertDialog.Builder构造函数,但由于ViewHolder是RecyclerView适配器的静态部分,我不能引用"MyActivity.这个".因此我仍然得到错误:
android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
Run Code Online (Sandbox Code Playgroud)
那么如何从不扩展Activity的类创建AlertDialog?
@Edit:更多代码以获取更多信息:
这是我的RecyclerView Adapter构造函数:
RecyclerViewCourseAdapter(ArrayList<Course> courses, Context context) {
this.context = context;
if (courses == null) {
throw new IllegalArgumentException("courses ArrayList must not be null");
}
mCourseArrayList = courses;
}
Run Code Online (Sandbox Code Playgroud)
我将给定的上下文存储为Adapter类中的private:
private Context context;
Run Code Online (Sandbox Code Playgroud)
这是我的ViewHolder:
public static class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener,View.OnLongClickListener …Run Code Online (Sandbox Code Playgroud) 我正在创建一个alertdialog,在消息中我放了一个String.该字符串带有一些我希望将它们作为链接的文本,因此当它们显示在对话框中时,用户可以单击它们并转到其他视图.让我告诉你一个我想要的例子:
public class Activity extends FragmentActivity{
(...)
public void myMethod(){
String message = "Some links: link1, link2, link3";
AlertDialog.Builder builder = new AlertDialog.Builder(this)
builder.setTitle("This is a title");
builder.setMessage(message);
builder.setCancelable(true);
builder.setOnCancelListener(onCancelListener);
builder.create().show();
}
}
Run Code Online (Sandbox Code Playgroud)
我想对link1,link2和link3做一些事情,所以当它们显示在对话框中时,它们显示为链接.然后,当用户点击link1时,会显示一个新活动; 当点击链接2时,会显示另一个视图,并且与link3相同.
我希望有一个onlinkclicklistener或类似的东西,所以我在用户点击链接时捕获.
有关如何做到这一点的任何想法?我希望你能理解我想要的东西:)
我有2个edittexts的对话框(来自这个库的材料对话框 ).在我旋转后,设备活动被破坏并且对话框也是如此.我知道edittext有自动保存输入文本,但我怎么能禁止对话被破坏?
MaterialDialog dialog = new MaterialDialog.Builder(context).customView(R.layout.dialog_edit_point_info, false)
.positiveText(R.string.ok).negativeText(R.string.cancel)
.positiveColorRes(R.color.dark_blue).negativeColorRes(R.color.black)
.iconRes(R.drawable.ic_marker_location)
.autoDismiss(false)
.title(R.string.edit_title_dialog).callback(callback).build;
Run Code Online (Sandbox Code Playgroud) 我正在使用SweetAlert Dialog for android.
https://github.com/pedant/sweet-alert-dialog
在成功对话框中,我想删除OK按钮,因为我正在使用计时器选项,但是在他们的文档中没有提到这样做的选项.请解释如何删除确定按钮.
MainActivity.java
public class Main2Activity extends AppCompatActivity {
private Firebase mRootRef;
private Button mBtn1;
private Button mBtn2;
int counter;
int counter1;
long value;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
Firebase.setAndroidContext(this);
mBtn1 = (Button) findViewById(R.id.btn1);
mBtn2 = (Button) findViewById(R.id.btn2);
mBtn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (v.equals(mBtn1)) {
mRootRef = new Firebase("https://voting-cf0fa.firebaseio.com/House/Jupiter/Player 1");
final Firebase mRefChild = mRootRef.child("Votes");
mRefChild.runTransaction(new Transaction.Handler() {
@Override
public Transaction.Result doTransaction(final MutableData currentData) {
if (currentData.getValue() == …Run Code Online (Sandbox Code Playgroud) 我正在使用SweetAlert Dialog for android.
https://github.com/pedant/sweet-alert-dialog
在成功对话框中,我想删除OK按钮并更改其样式.请解释如何删除确定按钮.
我按下按钮点击方法
new SweetAlertDialog(this, SweetAlertDialog.SUCCESS_TYPE)
.setTitleText("Good job!")
.setContentText("You clicked the button!")
.show();
Run Code Online (Sandbox Code Playgroud)