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;
}
# 1 楼答案
您没有对numberin使用
setOnEditorActionListener()
,请将textin.setOnEditorActionListener()
中的一个更改为numberin.setOnEditorActionListener()
# 2 楼答案
您在}上调用了
textin
{setOnEditorActionListener()
两次。从代码来看,第二个调用应该在numberin
上