警报对话框肯定按钮问题

2024-02-07

我在单击按钮时启动了警报对话框,它有用户名和密码,在警报对话框触发后,如果您按“确定”按钮,它会强制关闭并关闭应用程序,

任何帮助将不胜感激。

 public class MainActivity extends Activity {
final Context context = this;
private Button button;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);

     setContentView(R.layout.main);  

    TextView tv=(TextView)findViewById(R.id.introclusion_tv1);
    tv.setTypeface(FontFactory.getBFantezy(getBaseContext()));

    TextView tv1=(TextView)findViewById(R.id.introclusion_tv2);
    tv1.setTypeface(FontFactory.getBFantezy(getBaseContext()));
    tv1.setText(Html.fromHtml(getString(R.string.introclusion)));



button = (Button) findViewById(R.id.button1);

// add button listener
button.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View arg0) {

        LayoutInflater li = LayoutInflater.from(context);
        View dialog_layoutView = li.inflate(R.layout.dialog_layout, null);
        AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context);
        alertDialogBuilder.setView(dialog_layoutView);
        alertDialogBuilder

                .setCancelable(false)
                .setPositiveButton("OK",

                        new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog,int id) {

                                EditText username = (EditText) findViewById(R.id.txt_name);
                                EditText password = (EditText) findViewById(R.id.password);

                                if(username.getText().toString().length() > 0 && password.getText().toString().length() > 0 ) {
                                    if(username.getText().toString().equals("test") && password.getText().toString().equals("test")) {
                                Intent intent = new Intent(MainActivity.this,Text.class);
                                startActivity(intent);
                                finish();}
                                    else{
                                        // get your custom_toast.xml layout
                                        LayoutInflater inflater = getLayoutInflater();

                                        View layout = inflater.inflate(R.layout.custom_toast,
                                                (ViewGroup) findViewById(R.id.custom_toast));

                                        // set a dummy image
                                        ImageView image = (ImageView) layout.findViewById(R.id.image_toast);
                                        image.setImageResource(R.drawable.ic_launcher);

                                        // set a message
                                        TextView text = (TextView) layout.findViewById(R.id.text_toast);
                                        text.setText("Wrong username or password");

                                        // Toast...
                                        Toast toast = new Toast(getApplicationContext());
                                        toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
                                        toast.setDuration(Toast.LENGTH_LONG);
                                        toast.setView(layout);
                                        toast.show();}}}    


                        })
                .setNegativeButton("Cancel",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog,
                                    int id) {
                                dialog.cancel();
                            }
                        });

        // create alert dialog
        AlertDialog alertDialog = alertDialogBuilder.create();

        // show it
        alertDialog.show();

    }

});

  }

  }

LOGCAT:

  java.lang.NullPointerException
at com.example.demo.MainActivity$1$1.onClick(MainActivity.java:63)
at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:163)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3687)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
at dalvik.system.NativeStart.main(Native Method)

对话框布局.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:padding="10sp" >

<EditText
    android:id="@+id/txt_name"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:hint="@string/dialog_uname"
    android:singleLine="true" >

    <requestFocus />
</EditText>

<EditText
    android:id="@+id/password"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:ems="10"
    android:inputType="textPassword" >
</EditText>

Change

LayoutInflater li = LayoutInflater.from(context);

to

LayoutInflater li = LayoutInflater.from(arg0.getContext());

并改变

AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context);

to

AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(arg0.getContext());

Your context变量是null因为你在之前初始化它Activity被建造。而且你不需要创建一个context内部的变量Activity。如果出于某种原因(也许很简单)您想使用该变量,则在您所在的位置声明它,但在内部初始化它onCreate()

另外,在里面onClick()签名,我会将变量名称更改为有意义的名称,但这不是必需的。喜欢改变

public void onClick(View arg0)

to

public void onClick(View v)

Edit

您还需要更改这些行

EditText username = (EditText) findViewById(R.id.txt_name);
EditText password = (EditText) findViewById(R.id.password);

to

EditText username = (EditText) dialog_layoutView.findViewById(R.id.txt_name);
EditText password = (EditText) dialog_layoutView.findViewById(R.id.password);

这将告诉他们查看dialog_layout。目前他们正在寻找layout你膨胀的setContentView()

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

警报对话框肯定按钮问题 的相关文章

  • 从队列更新活动的最佳方法

    我有一个LinkedBlockingQueue在我的 生产者 调解者 消费者 模型中的调解者中 Producer 首先更新将 Mediator 添加到 ActivityQueue 中 接下来 消费者 活动在队列中等待 侦听并获取下一个项目
  • 将roottools.jar导入Android Studio

    我正在尝试从这里导入 roottools https code google com p roottools https code google com p roottools jar 文件 到 Android Studio 项目 到目前为
  • RecyclerView 未显示列表中的所有项目

    我在用RecyclerView在我的应用程序中 每次我打开屏幕时 我只能看到一项 但当我调试时 它每次都会出现onBindViewHolder method 这是我的适配器 Override public ViewHolder onCrea
  • Android Ble GATT_ERROR 133 经常使用三星设备

    我正在研究 BLE 应用程序 我已经使用 Nexus Moto Samsung LG 等不同设备进行了测试 我仅在三星设备中收到 GATT 错误 133 三星 A5 2016 尝试连接 10 次 但只连接了 2 或 3 次 请帮助我 Non
  • IntentService、Service 或 AsyncTask

    实现这一点的最佳方法是什么 我有一个 Android 应用程序 它将使用我的 python 服务器来允许两部手机之间进行轮流通信 回合意味着他们在一轮开始之前不能互相交谈 一旦他们发送一条消息 他们就不能发送另一条消息 直到对方做出回应 然
  • 删除 json 对象字符串中的“\”

    如何删除下面字符串中的特殊字符 String x message content toom recipients id 1000001865 room subject room 我使用了 x replaceAll 但它不起作用 您必须转义正
  • Android浏览器上的Web应用程序宽度问题

    所以到目前为止我只在 Android 浏览器上遇到过这个问题 基本上我的网站几乎一直运行良好 而且我还没有在 Dolphin Opera 或 Skyfire 上看到这个问题 但偶尔当我从手机主屏幕之一上的书签重新打开 Android 浏览器
  • Android/Java 创建辅助类来创建图表

    Goal 创建用于图形生成的辅助类 背景 我有 3 个片段 每个片段收集一些传感器数据 加速度计 陀螺仪 旋转 并使用 GraphView 绘制图表 以下是其中一个片段的代码 该代码当前工作正常 public class Gyroscope
  • Android相当于javascript的setTimeout和clearTimeout?

    setTimeout 有一个答案https stackoverflow com a 18381353 433570 https stackoverflow com a 18381353 433570 它没有提供我们是否可以像在 JavaSc
  • 无法找到/下载 AppCompat-v7:23.1.1

    怎么了 我遇到了很多 找不到 appcompat v7 23 1 1 的问题 许多解决方案都不起作用 经过几个小时的思考和寻找答案 我遇到了一个奇怪的问题 I have gotAndroid 支持库 23 1 1 已安装 所有功能 exce
  • 有没有办法替代Android中的标准Log?

    有没有办法以某种方式拦截对 android 中标准 Log 的调用并执行其他操作 在桌面 Java 中 人们通常会得到一些记录器 因此有多种方法可以安装不同的日志处理程序 实现 但是 Android似乎对Log有静态调用 我找不到任何有关替
  • 错误 libGL.so:无法使用 Android 模拟器打开共享对象文件

    我试图在 Ubuntu 12 04 64 位 中运行 android 模拟器 但是 我收到以下错误 Starting emulator for AVD emulatr Failed to load libGL so error libGL
  • 如何将 Google Now 搜索栏添加到我的应用程序中?

    谷歌刚刚将其搜索栏从 Google Now 引入到了 Play 商店应用程序中 如下面的 gif 所示 如何将这个操作栏搜索栏实现到我自己的应用程序中 我想要 style 汉堡动画 从工具栏按钮访问 麦克风按钮 对棒棒糖设备的连锁反应 我已
  • 无法在 Java 中输出正确的哈希值。怎么了?

    在我的 Android 应用程序中 我有一个 SHA256 哈希值 我必须使用 RIPEMD160 消息摘要算法进一步对其进行哈希值 我可以输出任何字符串的正确 sha256 和ripemd160 哈希值 但是当我尝试使用ripemd160
  • 如何从webkit浏览器中检测Android版本和品牌?

    如何通过webkit浏览器检测Android版本和品牌 可靠吗 我相信你可以检查用户代理 但是 我认为它不安全 因为有很多方法可以用来欺骗用户代理 在谷歌上搜索这个问题给了我们很多答案 它甚至可以在默认浏览器上运行 您只需输入 about
  • 为什么 ExpandableListView 更改 ChildView 设置(Android)?

    我对使用 ExpandableListView 有疑问 就我而言 我有两个组视图和两个子视图 而子视图由一个带有多个按钮 文本视图等的相对布局组成 例如 当首先扩展第二组并对视图持有者进行一些更改并随后扩展第一组时 先前所做的更改也会自动应
  • 当我使用 ListView 时,ListTile OnTap 正在工作。但是当我使用 ListWheelScrollView 时它不起作用

    当我使用 ListView 时 ListTile OnTap 正在工作 但是当我使用 ListWheelScrollView 时它不起作用 我的意思是它不会被窃听 观点发生变化 但我似乎无法点击它 我在很多地方和链接中寻找解决方案 但仍然找
  • Android BLE 扫描永远找不到设备

    几天以来 我尝试在我的应用程序中实现 BLE 连接 我知道我尝试连接的设备功能齐全 因此问题一定是我的代码 我用BluetoothLeScanner startScan 方法 但回调方法永远不会被调用 public void startSc
  • firebase中按范围查询

    我有一个食品价格范围滑块 根据滑块的最小值和最大值 我想显示此范围内的食品 滑块代码 multiSlider setOnThumbValueChangeListener new MultiSlider SimpleChangeListene
  • Android中绑定适配器有什么用?

    我一直在阅读有关Android中绑定适配器的文章 但我似乎不明白它 何时使用绑定适配器 有人可以用一个简单的例子来解释它吗 我读过的一篇文章在主活动中有一个绑定适配器 绑定适配器有一个参数 toastMessage 显然 只要 toastM

随机推荐

  • 关闭 USB 端口的电源

    我正在寻找扭转的方法power关闭 然后重新打开 USB 端口 解决方案可以是 C bash 等 我使用运行 32 位 Ubuntu 16 04 的 BeagleBone for armhf gt uname srvm Linux 4 4
  • Javascript 获取 元素内的文本

    我需要获取元素内的文本 我只能获取该元素的类 而不能获取 ID span class fileName test png span 所以我需要一种方法来获得test png 但正如你所见 我只有元素的类 没有 ID 请注意 我们可能还有更多
  • jquery ui sortable('refresh') 不起作用!

    我正在使用一个可排序列表 可以通过 jquery 由另一个脚本添加和删除元素 并且遇到一个奇怪的问题 这些新生成的项目似乎是可拖动的 但它们实际上不会排序 除非我在页面加载时已经有了它们 我尝试过使用 sortable refresh 但似
  • 防止新的原型方法出现在对象中键的 for 循环中

    我有一个函数 我想让它可供所有对象使用 它的 mergeObject object 函数定义如下 Object prototype mergeObjects function object if typeof object object r
  • 日期序列化后 Laravel 7 中的时区错误

    我正在开发一个新的 Laravel 7 1 应用程序 不是升级 但似乎使用日期序列化会失去时区 配置 应用程序 php timezone gt Europe Zurich 修补匠的例子 gt gt gt Carbon Carbon pars
  • 使用Python实现并集查找

    所以这就是我想要做的 我有一个包含几个等价关系的列表 l 1 2 2 3 4 5 6 7 1 7 我想合并共享一个元素的集合 这是一个示例实现 def union lis lis set e for e in lis res while T
  • Jackson JSON反序列化:每行中的数组元素

    我在用Jackson https github com FasterXML jackson core并且想要漂亮地打印 JSON 以便数组中的每个元素都进入每一行 例如 foo bar blah 1 2 3 Setting Serializ
  • Kubernetes:如何正确设置 php-fpm 和 nginx 共享卷权限

    我是 kubernetes 的新手 目前我正在尝试在 kubernetes 上部署 laravel 应用程序 我设置了 1 个部署 yaml 其中包含 2 个容器 nginx 和 php fpm 和一个共享卷 这是完整的 yaml apiV
  • 使用 C# .net 挂载其他用户 hive

    我正在编写一个应用程序 它将为每个选定的用户写入一些注册表项 我想知道是否有正确的方法来安装另一个用户的配置单元以在其中写入 目前 我正在使用 REG LOAD 来安装每个配置单元 它很实用 但很混乱 任何想法 预先感谢您的回答 Cheer
  • 如何在 OCR 中区分斜线零和八 (0->8)

    我正在为我的 Android 应用程序使用 ML Kit for Firebase ReCalc 收据计算器 https play google com store apps details id info trekto receipts
  • 消息总线中的总线发现

    我正试图了解消息总线和国际奥委会 但我的脑子里充满了问题 这就是我想到的场景 三台电脑通过局域网连接 无法访问互联网 这三台计算机各自运行一个服务 并自动自我发现其他计算机 换句话说 它们各自在公共总线上发送消息 这表明了他们自己的身份 从
  • 如何使用 Activator.CreateInstance 创建一个在运行时 T 未知的 List

    我在用着Activator CreateInstance通过类型变量创建对象 在运行时未知 static dynamic CreateFoo Type t gt Activator CreateInstance t 显然 我还没有正确理解如
  • 在构建期间调用 setState() 或 markNeedsBuild()。该覆盖小部件无法标记为需要构建

    我尝试在 AbsorbPointer 特别是 GestureDetector onPanEnd 调用的 fling 函数的 SetState 内使用 showGeneralDialog 编写动画对话框脚本 我附加了简单的代码 我尝试用未来的
  • std::atoll 与 VC++

    我一直在使用std atoll from cstdlib将字符串转换为int64 t与海湾合作委员会 该功能似乎在 Windows 工具链上不可用 使用 Visual Studio Express 2010 最好的选择是什么 我也有兴趣转换
  • 如何从 apt-get 下载软件包而不安装它? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我有一台电脑 没有NIC http en wikipedia org wiki Network interface controller 我想通过 U
  • 如何简化这些冗余的 C++ 代码?

    现有两个类 一个是SrcField它返回具体类型值 另一个是联合DSTField 定义相应的数据类型 class SrcField public signed char GetInt8 unsigned char GetUInt8 shor
  • 使用 SQL 在有向图中查找循环

    已经有几个关于查找循环的问题 但我没有在 SQL 中找到解决方案 首选 MSSQL 这些表将是 Node NodeID INT 和 Edge EdgeID INT NodeID1 INT NodeID2 INT 在有向图中查找循环的性能良好
  • ggadjustedcurves survminer if (xi > xj) 1L else -1L 错误

    我正在尝试使用 survminer 通过 ggadjustedcurves 创建调整后的生存曲线 我的代码如下 adjustedcurve lt coxph Surv time DeathTxCensor deadORtx 1 strata
  • 修复协议 Ecto.Queryable 未实现错误

    我刚开始使用 Ecto 和 Elixir 并且遇到了一个无法解释的错误 我的代码看起来就像 Ecto 自述文件中的示例 这是我的 Ecto 模型和查询模块 defmodule Registration do use Ecto Model s
  • 警报对话框肯定按钮问题

    我在单击按钮时启动了警报对话框 它有用户名和密码 在警报对话框触发后 如果您按 确定 按钮 它会强制关闭并关闭应用程序 任何帮助将不胜感激 public class MainActivity extends Activity final C