繁体   English   中英

(Android Studio Java) FAB OnClick 警报对话框使应用程序崩溃

[英](Android Studio Java) FAB OnClick Alert Dialog makes app crash

这是activity_main代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">

<TextView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textAlignment="center"
    android:gravity="center"
    android:textSize="36sp"
    android:textColor="@color/colorPrimary"
    android:text="To Do"
    android:layout_marginTop="45dp"
    android:fontFamily="@font/montserratlight"/>

<ListView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/listView"
    android:layout_marginTop="126dp"
    android:layout_marginLeft="15dp"
    android:layout_marginRight="15dp">
</ListView>

<android.support.design.widget.FloatingActionButton
    android:id="@+id/fab"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_alignParentBottom="true"
    android:layout_marginLeft="10dp"
    android:layout_marginRight="10dp"
    android:layout_marginBottom="50dp"
    android:src="@drawable/plussymbol" />



</RelativeLayout>

这是我的 MainActivity Java 代码:

package com.geoff.productivitywatch;

import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {

int clickCounter = 0;

@Override
protected  void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ListView list = (ListView) findViewById(R.id.listView);

    final ArrayList<String> todo = new ArrayList<>();
    todo.add("Swipe Up");

    ArrayAdapter adapter = new ArrayAdapter(this, R.layout.tododesign, todo);
    list.setAdapter(adapter);

    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);

    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //Here is where the pop-up box code goes
            final EditText todoEditText = new EditText(getApplicationContext());
            AlertDialog dialog = new AlertDialog.Builder(getApplicationContext())
                    .setTitle("New Task")
                    .setMessage("What next?")
                    .setView(todoEditText)
                    .setPositiveButton("Add", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            //Add Task to listview
                            String task = String.valueOf(todoEditText.getText());
                            todo.add("" + task);
                        }
                    })
                    .setNegativeButton("Cancel", null)
                    .create();
            dialog.show();
        }
    });

    }
}

我尝试编写一种方法,在该方法中,单击浮动操作按钮会弹出一个对话框警告框,您可以在其中编辑文本,然后将其添加到列表视图中。 Android Studio 在我的代码中没有看到错误,但是当我在我的 android 设备上测试应用程序时,只要单击浮动操作按钮,应用程序就会崩溃。 但是,我知道这不是我的设备的问题,因为我之前已经成功对其进行了多次测试,只有在我添加 AlertDialog 方法时它才开始崩溃。 我想我可能在上下文中出错了,但是我已将它们更改为我能想到的所有变体,但并没有帮助。

IDK 导致崩溃的实际原因是什么,因为您没有共享 logcat,但我注意到您尝试实现的任何目标都是通过 Dialog 而不是通过 AlertDilaog 可能实现的,这是我的解释:

  1. 为对话框创建一个单独的 .xlm 布局文件。 与您编辑文本和一些确定和取消按钮。

  2. 在 fab create/inflate 的 onClick 内,并显示对话框

     // Create a custom dialog object final Dialog dialog = new Dialog(MainActivity.this); // Include dialog.xml file dialog.setContentView(R.layout.your_dialg_layout); // Set dialog title dialog.setTitle("Custom Dialog"); // set values for custom dialog components - text, image or button EditText todoEditText = dialog.findViewById(R.id.your_edit_text); Button mPositivButton = dialog.findViewById(R.id.your_yes_button); Button mNegativeButton = dialog.findViewById(R.id.your_cancle_button); mPositivButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String task = String.valueOf(todoEditText.getText()); todo.add("" + task); dialog.dismiss(); } }); mNegativeButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dialog.dismiss(); } }); dialog.show();
    1. 这篇文章也可以帮助你

      如何在对话框中制作编辑文本框

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM