如何获得对话框输入?

用户名

我正在尝试从选择弹出菜单项后弹出的对话框获取输入。我不太了解如何获取用户的文本输入,因此我可以将其设置为TextView“ ListName”(请参阅​​最后一种方法)。我得到的文本是这样的:android.widget.EditText@41f3abf8

MainActivity.java:

package com.example.groceryrunner;

import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.PopupMenu;
import android.widget.TextView;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    // Method for activity events
    public void onButtonClick(View v) {
        final int id = v.getId();
        switch (id) {
        case R.id.CreateLG:
            createLGPopup(v);
            break;
        case R.id.EditButton:
            findViewById(R.id.GetStarted).setVisibility(View.INVISIBLE);
            createEditButtonPopup(v);
            break;
        }
    }
    // findViewById(R.id.GetStarted).setVisibility(View.INVISIBLE);
    // TextView text = (TextView) findViewById(R.id.GetStarted);
    // text.setText(choice);

    // CreateLG Button's Popup Menu
    public void createLGPopup(View v) {
        PopupMenu LGMenu = new PopupMenu(this, v);
        LGMenu.getMenuInflater().inflate(R.menu.createlg_menu, LGMenu.getMenu());
        LGMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {

            @Override
            public boolean onMenuItemClick(MenuItem item) {
                String choice = new String((String) item.getTitle());
                if (choice.equals("Create List")) {
                    createListDialog();
                }
                else if (choice.equals("Create Group")) {
                    findViewById(R.id.GetStarted).setVisibility(View.INVISIBLE);
                    //createListDialog();
                }
                return false;
            }
        });
        LGMenu.show();
    }

    // Create Edit Button's Popup Menu
    public void createEditButtonPopup(View v) {
        PopupMenu EditMenu = new PopupMenu(this, v);
        EditMenu.getMenuInflater().inflate(R.menu.editlist_menu, EditMenu.getMenu());
        EditMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {

            @Override
            public boolean onMenuItemClick(MenuItem item) {
                String choice = new String((String) item.getTitle());
                if (choice.equals("Edit List Name")) {
                    findViewById(R.id.GetStarted).setVisibility(View.INVISIBLE);
                    //createListDialog();
                }
                else if (choice.equals("Clear List Items")) {
                    findViewById(R.id.GetStarted).setVisibility(View.VISIBLE);
                    //createListDialog();
                }
                else if (choice.equals("Delete List Name")) {
                    findViewById(R.id.GetStarted).setVisibility(View.INVISIBLE);
                    //createListDialog();
                }
                return false;
            }
        });
        EditMenu.show();
    }

    // Create List Dialog
    public AlertDialog.Builder dialogBuilder;
    private void createListDialog() {
        dialogBuilder = new AlertDialog.Builder(this);
        final EditText textInput = new EditText(this);      
        dialogBuilder.setTitle("Create list");
        dialogBuilder.setMessage("Name your list: ");
        dialogBuilder.setView(textInput);
        dialogBuilder.setPositiveButton("Create", new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
                TextView text = (TextView) findViewById(R.id.ListName);
                text.setText(textInput.toString());
                //TextView text = (TextView) findViewById(R.id.ListName);
                //String input = textInput.getText().toString(); //(textInput.toString());
                //Toast.makeText(getApplicationContent(), "List has been created.", toast.LENGTH_SHORT);
                // add list to ListsButton
                //findViewById(R.id.ListName). -> Change ListName text to created list
            }
        });
        dialogBuilder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
                //Toast.makeText(getApplicationContent(), "List has been created.", toast.LENGTH_SHORT);
            }
        });
        // Output
        AlertDialog dialogue = dialogBuilder.create();
        dialogue.show();

    }
}
德塞姆

基于评论中讨论的内容,您应该能够像这样获得它:

@Override
public void onClick(DialogInterface dialog, int which) {
    TextView text = (TextView) findViewById(R.id.ListName);
    text.setText(textInput.getText().toString());
    // ...
  1. 从对话框中检索活动中引用的视图(此处为ListName),findViewById()回调是可行的,因为对话框被定义为活动的嵌套类,因此findViewById()将其翻译成MainActivity.this.findViewById()这样这样就可以了ListName还必须将其强制转换为使用特定于TextView类的方法
  2. 如果编写textInput.toString()则将调用对象toString()方法TextView看起来好像TextView没有覆盖toString(),所以这是默认Object#toString()方法,它仅返回对象类型的名称及其哈希码(这就是您看到的原因android.widget.EditText@41f3abf8)。您需要CharacterSequence先从视图(textInput.getText())获取。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

CKEditor如何获取对话框输入

来自分类Dev

如何获取对话框输入?

来自分类Dev

CKEditor如何获取对话框输入

来自分类Dev

阻止输入对话框

来自分类Dev

如何处理警报对话框中的无效输入?

来自分类Dev

如何在Matlab中创建输入对话框?

来自分类Dev

如何停止等待tkinter对话框中的输入?

来自分类Dev

如何处理警报对话框中的无效输入?

来自分类Dev

走出输入对话框时如何禁用键盘?

来自分类Dev

如何保存来自警报对话框的用户输入?

来自分类Dev

如何在 Angular 的对话框中显示输入更改?

来自分类Dev

无法获得全宽对话框

来自分类Dev

如何隐藏对话框

来自分类Dev

BASH:变量中的对话框输入

来自分类Dev

jQuery对话框作为输入

来自分类Dev

让线程等待对话框输入

来自分类Dev

反应模式/对话框的焦点输入

来自分类Dev

Google Spreadsheet弹出输入对话框

来自分类Dev

JOptionPane输入对话框菜单

来自分类Dev

捕获输入结果-显示对话框

来自分类Dev

对话框输入/输出帮助

来自分类Dev

反应模式/对话框的焦点输入

来自分类Dev

用户输入的Android对话框

来自分类Dev

带有文本输入的对话框

来自分类Dev

如何获得从时间选择对话框到首选项活动的时间?

来自分类Dev

如何获得AMP Cookie同意模式对话框背景工作?

来自分类Dev

如何在Mac OS上使用Tkinter获得黑色文件对话框?

来自分类Dev

在objective-c中按按钮时如何获得“打印”对话框?

来自分类Dev

如何获得具有部分MVC视图的对话框按钮的访问权?