有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Android Studio中的getText()键盘输入后onClickListener出现java问题

我有一个小的Android Studio应用程序来测试键盘输入的处理。它有一个EditText字段作为名称,第二个EditText字段作为十进制数。我正在使用setOnEditorActionListener获取用户输入。然后,我将条目存储在一个字符串中,并在一个单独的公共类中加倍,然后在单击按钮时尝试在TextView字段中显示它们。我关心的是确保我确实得到了数据(以便以后可以被其他活动使用)

在public类中,我将字符串初始化为“**”,将double初始化为0.0。但当我点击按钮显示输入的文本时,四颗星消失,字段变为空白

我甚至没有尝试显示输入的号码,因为名称文本输入和显示不起作用

请问我做错了什么?任何帮助都将不胜感激。代码如下

主要活动。xml

<RelativeLayout xmlns:安卓="http://schemas.安卓.com/apk/res/安卓"
            xmlns:tools="http://schemas.安卓.com/tools"
            安卓:layout_width="match_parent"
            安卓:layout_height="match_parent"
            安卓:paddingLeft="@dimen/activity_horizontal_margin"
            安卓:paddingRight="@dimen/activity_horizontal_margin"
            安卓:paddingTop="@dimen/activity_vertical_margin"
            安卓:paddingBottom="@dimen/activity_vertical_margin"
            tools:context=".MainActivity">

<EditText
    安卓:layout_width="wrap_content"
    安卓:layout_height="wrap_content"
    安卓:inputType="text"
    安卓:hint="Name"
    安卓:ems="10"
    安卓:id="@+id/textin"
    安卓:layout_marginTop="63dp"
    安卓:layout_alignParentTop="true"
    安卓:layout_centerHorizontal="true"
    安卓:imeOptions="actionNext"/>

<EditText
    安卓:layout_width="wrap_content"
    安卓:layout_height="wrap_content"
    安卓:inputType="numberDecimal"
    安卓:hint= "Number"
    安卓:ems="10"
    安卓:id="@+id/numberin"
    安卓:layout_below="@+id/textin"
    安卓:layout_centerHorizontal="true"
    安卓:imeOptions="actionDone"/>

<TextView
    安卓:layout_width="wrap_content"
    安卓:layout_height="wrap_content"
    安卓:textAppearance="?安卓:attr/textAppearanceLarge"
    安卓:text="echo"
    安卓:id="@+id/echo"
    安卓:layout_centerVertical="true"
    安卓:layout_centerHorizontal="true"/>

<Button
    安卓:layout_width="wrap_content"
    安卓:layout_height="wrap_content"
    安卓:text="New Button"
    安卓:id="@+id/button"
    安卓:layout_below="@+id/echo"
    安卓:layout_centerHorizontal="true"
    安卓:layout_marginTop="42dp"/>

</RelativeLayout>

主要活动。java

package com.example.owner.keyboardinput;

//imports here

public class MainActivity extends AppCompatActivity
{

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

    final TextView echo = (TextView) findViewById(R.id.echo);
    final Button button = (Button) findViewById(R.id.button);

    final EditText textin = (EditText) findViewById(R.id.textin);
    textin.setOnEditorActionListener(new TextView.OnEditorActionListener()
    {
        @Override
        public boolean onEditorAction(TextView v, int actionId, KeyEvent            event)
        {
            boolean handled = false;
            if (actionId == EditorInfo.IME_ACTION_NEXT) {
                String inputText1 = textin.getText().toString();
                Common.str = inputText1;  // Store in common public class
                echo.setText(Common.str); // But input doesn't appear!
            }
            return handled;
        }
    });

    final EditText numberin = (EditText) findViewById(R.id.numberin);
    textin.setOnEditorActionListener(new TextView.OnEditorActionListener()
    {
        @Override
        public boolean onEditorAction(TextView v, int actionId, KeyEvent event)
        {
            boolean handled = false;
            if (actionId == EditorInfo.IME_ACTION_DONE) {
                String inputText2 = numberin.getText().toString();
                echo.setText(inputText2);
                //Common.dbl = Double.valueOf(inputText);

                InputMethodManager inputManager = (InputMethodManager)
                        getSystemService(Context.INPUT_METHOD_SERVICE);
                            inputManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(),
                        InputMethodManager.HIDE_NOT_ALWAYS);
                handled = true;
            }
            return handled;
        }
    });

    button.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View view)
        {
            echo.setText(Common.str);  // Field goes blank!
        }
    });
}

常见。java

package com.example.owner.keyboardinput;

/**
 * Created by Owner on 13/11/2015.
 */
public class Common
{
    public static String str = "****";
    public static double dbl = 0.0;
}

共 (2) 个答案

  1. # 1 楼答案

    您没有对numberin使用setOnEditorActionListener(),请将textin.setOnEditorActionListener()中的一个更改为numberin.setOnEditorActionListener()

  2. # 2 楼答案

    您在textin{}上调用了setOnEditorActionListener()两次。从代码来看,第二个调用应该在numberin

    ...
    final EditText numberin = (EditText) findViewById(R.id.numberin);
    numberin.setOnEditorActionListener(new TextView.OnEditorActionListener()
    ...