有 Java 编程相关的问题?

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

java应用程序未从编辑文本中获取值,似乎正在跳过行

此代码不返回一个单词。它似乎跳过了“word=”行。et未连接到正确的编辑文本框。我们使用调试运行它,它直接进入“try”行,没有给word文本框的值

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

    mydb = new DBHelper(this);

    et = (EditText) findViewById(R.id.nw);
    word = et.getText().toString();

    Toast.makeText(getApplicationContext(),word,Toast.LENGTH_LONG).show();

    l = (Button) findViewById(R.id.ad);
    l.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            try {mydb.insertWord(word);}
            catch(Exception e){
                Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_SHORT).show();
            }
            et.setText("");
        }
    });

    b = (Button) findViewById(R.id.back);
    b.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {Intent i = new Intent(AddWord.this, MainActivity.class);
            startActivity(i);
        }
    });
}

共 (2) 个答案

  1. # 1 楼答案

    这是因为您在活动的一开始就将“编辑文本”的值设置为word。记住,在活动开始时,编辑文本是空的,因此单词将有空字符串。因此,为了获得try块中的当前值,您应该再次从编辑文本中获取最新值。你可以这样改变你的试块

     try {
            word = et.getText().toString();
            mydb.insertWord(word);
         }
         catch(Exception e){            
          Toast.makeText(getApplicationContext(),e.toString(),Toast.LENGTH_SHORT).show();
         }
    
  2. # 2 楼答案

    转换它:

    l.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            try {mydb.insertWord(word);}
            catch(Exception e){
                Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_SHORT).show();
            }
            et.setText("");
        }
    

    致:

    l.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            try {mydb.insertWord(et.getText().toString());}
            catch(Exception e){
                Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_SHORT).show();
            }
            et.setText("");
         }
    

    并删除以下内容:

    word = et.getText().toString();