繁体   English   中英

.setText无法正常工作

[英].setText not working properly

因此,我处于要制作的应用程序的基本部分中。 我以前从未遇到过此错误,也不知道发生了什么。 我的.setText抛出错误,提示“ setText无法解析或不是字段”,我环顾四周,但仍未发现问题。 我相信我做得正确。 如果有人可以帮助我,那就太好了!

MainActivity.java:

public class MainActivity extends Activity {

final TextView loading_Text = (TextView)findViewById(R.id.textView4);
final EditText name_Edit = (EditText)findViewById(R.id.editText1);
//String Values
    String Age="";
    String Name = name_Edit.getText().toString();

//Int Values
    int Gender = 0; //1 male | 2 female
    int Group = 0; //Different groups for ages and genders
    int save_Info = 0; //save info to phone


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

    Button male_Button= (Button)findViewById(R.id.button1);
    Button female_Button = (Button)findViewById(R.id.button2);


    male_Button.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            Gender++;//Adds one to show this user is a male.

            loading_Text.setText=(Name);
        }
    });
}

setText是一个函数。 因此,您需要将name作为参数传递。 loading_Text.setText(Name);

更改

    loading_Text.setText=(Name);

对此:

    loading_Text.setText(Name);

另外,如果您在textview中看不到任何内容,那是因为您在创建视图之前就已经获得了edittext的文本,因此我使用了on edittext侦听器,当更改了编辑文本时,可以使用这种方法来刷新String:

name_Edit.addTextChangedListener(new TextWatcher() {

          public void afterTextChanged(Editable s) {

              Name = name_Edit.getText().toString();    
          }
          public void beforeTextChanged(CharSequence s, int start, int count, int after) {}

          public void onTextChanged(CharSequence s, int start, int before, int count) {}
       });

我希望这对你有用:)

我看到了两个问题:

第一:

loading_Text.setText=(Name);

应该

loading_Text.setText("The text you want to set");

您需要查看API文档,以了解如何调用该方法。

第二:

移动这些部分:

final TextView loading_Text = (TextView)findViewById(R.id.textView4);
final EditText name_Edit = (EditText)findViewById(R.id.editText1);
//String Values
    String Age="";
    String Name = name_Edit.getText().toString();

在您的onCreate ,如下所示:

public class MainActivity extends Activity {

TextView loading_Text;
EditText name_Edit;
...
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    loading_Text = (TextView)findViewById(R.id.textView4);
    name_Edit = (EditText)findViewById(R.id.editText1);

否则您将获得NullPointerException

这是因为您试图在初始化视图之前到达View的属性。 视图将在setContentView之后初始化,并且您打算做的是在加载视图之前从R.layout.activity_main中找到findViewById

同样,您需要移动此方法调用:

String Name = name_Edit.getText().toString();

setContentView之后的某个地方。

暂无
暂无

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

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