我有3个类:main,Sublist和editcrap。
现在我有2个文本视图,由Sublist xml文件中的Button分隔;以及我的editcrap xml文件中的EditText和Button。
我想要做的是从editcrap活动的EditText中获取文本输入,单击Button并将其返回到Sublist活动,并将其显示在Sublist xml文件的第一个textview中。我使用Intents和Sublist actvity中的startActivityForResult()完成了这项工作。
问题:
但是在Sublist活动中收到数据bak之后;在“subject1.setText(newText);”之后代码被执行...我在模拟器中的子列表活动中看到的是Button(应该在2个TextView之间)和右边的TextView。左侧TextView消失。模拟器上没有错误或者没有错误......只是TextView消失了。我一直在努力解决这个问题,但没有运气。有人能告诉我,我正在俯瞰吗? :)
我的代码:
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
switch(requestCode)
{
case 1: if(resultCode==Activity.RESULT_OK)
{
String newText = data.getStringExtra("thetext");
subject1.setText(newText);
// this is where the textview supposed to update but
// instead vanishes entirely
}
break;
}
}
//second activity's code:
sub1 = (EditText) findViewById(R.id.peditText1);
final String theText = sub1.getText().toString();
parambutton1 = (Button) findViewById(R.id.parambutton1);
parambutton1.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
Intent i = new Intent(editcrap.this, Sublist.class);
i.putExtra("thetext", theText);
setResult(Activity.RESULT_OK, i);
finish();
}
});
}
这是第二个活动如何从EditText返回输入文本。
答案 0 :(得分:1)
根据documentation,请始终使用以您的包名称为前缀的额外名称。
例如:"com.example.thetext"
示例设置结果:
data.putExtra("com.example.thetext", yourstring);
setResult(Activity.RESULT_OK, data);
示例获得结果:
String newText = data.getStringExtra("com.example.thetext");
subject1.setText(newText);
为了避免错误输入额外的字段名称,我使用了字符串资源,因此我可以getString(R.string.extra_thetext)
为我存储“com.example.thetext”,所以我以后不会输入错误(不是编译时)检查好吗?)。但是你可以类似地使用常量:
static final String THE_TEXT = "com.example.thetext";
答案 1 :(得分:0)
我遇到了类似的问题,我的textView在几次循环之后进行了分析,并意识到我尝试为settext参数分配一个空值而导致这个问题
TLDR;检查字符串是否为空
答案 2 :(得分:-2)
您可能希望使用不同的getStringExtra重载。
尝试使用data.getStringExtra("thetext","defaultText")
。这将确保将SOMETHING置于视图中。
另外,如果您不知道,第一个参数是标记,而不是实际文本。 :)
希望这有帮助。