Android 如何使EditText重新获得焦点?
我有一个带有编辑文本和按钮的活动。按下按钮时,我打电话Android 如何使EditText重新获得焦点?,android,android-activity,setfocus,android-edittext,clickable,Android,Android Activity,Setfocus,Android Edittext,Clickable,我有一个带有编辑文本和按钮的活动。按下按钮时,我打电话 myEditText.setClickable(false); myEditText.setFocusable(false); 我有另一个按钮,按下时,会改变活动 Intent myIntent = new Intent(view.getContext(), DestinationScreen.class); startActivityForResult(myIntent, 0); 当我从activity2返回到包含EditText的主
myEditText.setClickable(false);
myEditText.setFocusable(false);
我有另一个按钮,按下时,会改变活动
Intent myIntent = new Intent(view.getContext(), DestinationScreen.class);
startActivityForResult(myIntent, 0);
当我从activity2返回到包含EditText的主活动时,我希望它重新获得焦点。也就是说,我希望能够在其中输入一些新值。你知道怎么可能吗
我试图在我的主要活动中做到这一点
startActivityForResult(myIntent, 0);
myEditText = (EditText) findViewById(R.id.textBox);
myEditText.setClickable(true);
myEditText.setFocusable(true);
myEditText.requestFocus();
它似乎不起作用。正如您所说,您希望
EditText
在您从第二个活动返回时重新获得焦点。那么这可能就是您应该尝试的:因为您已经在使用
startActivityForResult
方法(requestCode:0)调用activity2,所以您可以利用它:
您应该覆盖
onActivityResult(int requestCode, int resultCode, Intent data)
方法,检查requestCode==0
,如果是:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode)
{
case 0:
EditText myEditText = (EditText) findViewById(R.id.textBox);
myEditText.setClickable(true);
myEditText.setFocusable(true);
myEditText.requestFocus();
default:
break;
}
}
我还没有通过Android源代码来检查这一点,但症状向我暗示:
在#onActivityResult()
之前调用,并且#onResume()
- 请求焦点可能需要显示视图,但这还不是真的(因为活动的视图层次结构未附加到其窗口,请参见
)view\isShown()
onActivityResult()定义中:
final EditText myEditText = (EditText) findViewById(R.id.textBox);
runOnUiThread(new Runnable() {
@Override
public void run() {
myEditText.requestFocus();
// Also move the cursor to the end
myEditText.setSelection(myEditText.length());
}
});
@rekaszeru,我仍然无法编辑文本。我之前输入的内容仍然可见,我无法键入任何内容。请确保您的myEditText在本地初始化,它不应该是全局变量。从activity2返回后,我可以在我的主activity中执行此操作b=(按钮)findViewById(R.id.code);b、 可点击设置(真);我仍然无法使用EditText myEditText=(EditText)findViewById(R.id.textBox);myEditText.setClickable(真);myEditText.setFocusable(true);myEditText.requestFocus();效果很好,有什么帮助吗?我还是拿不到。你有什么例外吗?主活动的onActivityResult方法是否被调用?