环境:Android Studio 3.1.1
public class AddQuestionActivity extends AppCompatActivity
{
public Button add_question;
public EditText question_EditText;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_question);
add_question = findViewById(R.id.addquestion);
question_EditText = findViewById(R.id.question_add);
final String question = question_EditText.getText().toString();
Log.d("finds","question1:"+question);
add_question.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
Log.d("finds","question:"+question);
if (question.length()==0)
{
new AlertDialog.Builder(AddQuestionActivity.this)
.setTitle(R.string.add_error)
.setMessage(R.string.add_blank)
.setPositiveButton(R.string.ok, null)
.setNeutralButton(R.string.cancel, null)
.show();
}
}
});
}
}
问题的值总是空的。
最后,我找到另一种方式 在* .xml中添加
android:onClick="add_question"
<。>在* .java中使用
public void add_question(View v)
{
}
它有效。
我不明白为什么setOnClickListener方法不起作用?
final String question = question_EditText.getText().toString();
我应该将此代码更改为setOnClickListener方法吗?
答案 0 :(得分:1)
删除此
final String question = question_EditText.getText().toString();
初始活动时只获得1次值。
将String question = question_EditText.getText().toString();
移动到onClick方法。
单击按钮时,尝试使用edittext获取当前字符串。
add_question.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
String question = question_EditText.getText().toString();
Log.d("finds","question:"+question);
if (question.length()==0)
{
new AlertDialog.Builder(AddQuestionActivity.this)
.setTitle(R.string.add_error)
.setMessage(R.string.add_blank)
.setPositiveButton(R.string.ok, null)
.setNeutralButton(R.string.cancel, null)
.show();
}
}
});
答案 1 :(得分:1)
final String question = question_EditText.getText().toString();
这行代码在OnCreate()方法中,因此在Activity加载时只调用一次。 将文本添加到EditText后,单击该按钮,但字符串&#34;问题&#34;仅包含初始值;不是更新的。 因此,您应该在将文本添加到Button的ClickClick侦听器的EditText.or之后调用该代码。
答案 2 :(得分:1)
试试这个:
你使用
final String question = question_EditText.getText().toString();
更改为
String question = uestion_EditText.getText().toString(); //gets you the question of edit text
将此行放在onClick()
中 像这样: add_question.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
String question = question_EditText.getText().toString();
Log.d("finds","question:"+question);
if (question.length()==0)
{
new AlertDialog.Builder(AddQuestionActivity.this)
.setTitle(R.string.add_error)
.setMessage(R.string.add_blank)
.setPositiveButton(R.string.ok, null)
.setNeutralButton(R.string.cancel, null)
.show();
}
}
});
}
}
答案 3 :(得分:1)
从那里删除以下行并将其添加到onclick方法中。
<textarea [value]="offers | json" formControlName="offers"
class="form-control" rows="3">
</textarea>
这里是final String question = question_EditText.getText().toString();
Log.d("finds","question1:"+question);
方法的完整代码。
onCreate()
答案 4 :(得分:0)
试试这个!
注意:您正试图将ontext值放在onclick旁边,它将始终在其中!
final String question = question_EditText.getText().toString();
add_question.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
final String question = question_EditText.getText().toString();
Log.d("finds","question:"+question);
if (question.length()==0)
{
new AlertDialog.Builder(AddQuestionActivity.this)
.setTitle(R.string.add_error)
.setMessage(R.string.add_blank)
.setPositiveButton(R.string.ok, null)
.setNeutralButton(R.string.cancel, null)
.show();
}
}
});
答案 5 :(得分:0)
String question = question_EditText.getText().toString();
将此行放在onClick()