Java 获取edittext字段并在TextView中显示
我对编码比较陌生,但对Java和Android有一些经验。我有一个非常基本的问题,我已经做了一次又一次,但出于某种原因,这种情况不起作用 我有一个由用户填充的Java 获取edittext字段并在TextView中显示,java,android,android-edittext,textview,illegalstateexception,Java,Android,Android Edittext,Textview,Illegalstateexception,我对编码比较陌生,但对Java和Android有一些经验。我有一个非常基本的问题,我已经做了一次又一次,但出于某种原因,这种情况不起作用 我有一个由用户填充的edittext字段。当按下enter按钮时,应用程序会将其作为字符串保存。然后,该字符串用于使用用户输入填充TextView 我已经创建了findviewbyids,我已经将字符串设置为等于edittext输入,然后根据下面的代码将文本视图中的文本设置为字符串。我已经检查了以前的应用程序,我已经做了,这一直是工作之前 package co
edittext
字段。当按下enter按钮时,应用程序会将其作为字符串保存。然后,该字符串用于使用用户输入填充TextView
我已经创建了findviewbyids
,我已经将字符串设置为等于edittext
输入,然后根据下面的代码将文本视图中的文本设置为字符串。我已经检查了以前的应用程序,我已经做了,这一直是工作之前
package com.example.android.golfhandicap;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
EditText playerName;
TextView playerOneName;
String name;
int handicap;
EditText playerHandicap;
TextView playerOneHcp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.front_page);
}
//set view by IDs
public void views() {
playerName = findViewById(R.id.inputPlayerName);
playerOneName = findViewById(R.id.playerOneName);
playerHandicap = findViewById(R.id.inputPlayerHcp);
playerOneHcp = findViewById(R.id.playerOneHcp);
}
/**
* Add the codes for the button to navigate around the app
*/
public void enterScore1(View view) {
setContentView(R.layout.front_page);
}
public void addPlayer(View view) {
setContentView(R.layout.new_player);
}
public void addScore(View view) {
setContentView(R.layout.input_page);
}
public void enterPlayer(View view) {
views();
name = playerName.getText().toString();
//handicap = Integer.parseInt(playerHandicap.getText().toString());
playerOneName.setText(name);
//playerOneHcp.setText(handicap);
Toast.makeText(this, "player name is " + name + " and handicap is
" + handicap , Toast.LENGTH_SHORT).show();
setContentView(R.layout.front_page);
}
}
包含文本视图的页面的XML我想在以下位置显示字符串
:
使用edittext
获取用户输入的布局的XML:
如果我注释掉行p1Name.setText(name)代码>然后它就可以正常工作了,我干杯来检查名字是否被接受,名字是否被设置为输入。因此,p1Name
似乎有问题。我已经检查并三次检查了所有ID是否正确
我已经花了一个多小时试图弄明白这一点,但我看不出我做错了什么
这是我在logcat上看到的行(这些都是红色显示的行)
任何帮助都将得到感激。问题仅仅是因为以下原因:
您尚未使用findViewById
绑定视图。这是因为以下代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.front_page);
// Here you haven't bind the view.
}
您应该使用views()
方法直接绑定视图。因此,将代码更改为:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.front_page);
// bind the view.
views();
}
每次使用此方法单击按钮时,您都会更改布局视图:
public void addScore(View view) {
setContentView(R.layout.input_page);
}
这将成为你问题的根源之一。首先,不建议这样做,因为你是。其次,您需要确保所有布局onClick
都在代码中实现
最后但并非最不重要的一点,您最好在代码中使用setOnClickListener
,而不是在布局中使用onClick
属性。这是因为您应该将逻辑和UI分开
logcat中有错误吗?请为idplayername
发布xml标记,我在查看Logcat时似乎遇到了两个错误(以前从未使用过它,所以不确定这些是否有用,第一个错误是InvocationTargetException第二个错误是nullpointerexception。这是PlayerName文本视图的xml。我对android studio还是新手,我刚开始一个java模块作为我学位的一部分。我的日志包含大量信息,上面的两个错误是我认为问题是。但我还没有对logcat错误进行任何研究。非常感谢你的回答。我已经将FindViewbtID更改为onCreate方法,但没有太大帮助。你提到的其他一些事情我不熟悉。我在另一个应用程序中使用了onClickListener,但主要是复制的om在线解决方案。我需要阅读如何正确操作。长话短说,你只需要设置布局并将布局上的视图绑定到代码上,然后按钮onClick
就可以工作。你遇到问题只是因为你还不熟悉安卓代码的工作原理。花点时间深入了解一下;)
public void addScore(View view) {
setContentView(R.layout.input_page);
}