Android ActivityResult重新创建,意图在第二次发射尝试期间起作用
我彻底阅读了相关主题,但没有找到解决方案。 我有一个碎片活动,其中有几个碎片。在第二个片段中,我渴望在editText touch上启动一个活动结果Android ActivityResult重新创建,意图在第二次发射尝试期间起作用,android,fragment,Android,Fragment,我彻底阅读了相关主题,但没有找到解决方案。 我有一个碎片活动,其中有几个碎片。在第二个片段中,我渴望在editText touch上启动一个活动结果 edtStreetName.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { Intent inte
edtStreetName.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
Intent intent = new Intent(getActivity().getApplicationContext(),GetAddressActivity.class);
startActivityForResult(intent, 1);
return false;
}
});
活动成功启动。经过一些操作后,我想得到片段的结果
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
switch (item.getItemId()) {
case R.id.action_settings:
// Do Activity menu item stuff here
Log.e("menu pressed","menu!");
Intent intent = new Intent();
intent.putExtra("name", "someStreetName");
setResult(RESULT_OK, intent);
finish();
return false;
default:
break;
}
return false;
}
现在是一件奇怪的事情…活动会重新创建自己,并且只在多次重新创建之后-结果会发送回片段。。有时可能需要三次或更多的尝试
Some log cat info:
03-26 00:25:23.634 32242-32242/com.tr.ctprot E/launch ResultActivity﹕ launched
03-26 00:25:23.814 32242-32242/com.tr.ctprot E/launch ResultActivity﹕ launched
03-26 00:25:23.894 32242-32242/com.tr.ctprot E/ResultActivity﹕ created!
03-26 00:25:25.736 32242-32242/com.tr.ctprot E/menu item﹕ is pressed!
03-26 00:25:25.856 32242-32242/com.tr.ctprot E/ResultActivity﹕ created!
03-26 00:25:26.286 32242-32242/com.tr.ctprot E/ResultActivity﹕ destroyed!
03-26 00:25:27.658 32242-32242/com.tr.ctprot E/menu item﹕ is pressed!
03-26 00:25:27.778 32242-32242/com.tr.ctprot E/INTENT Returned﹕ and name is someStreetName
03-26 00:25:27.778 32242-32242/com.tr.ctprot E/INTENT Returned﹕ and name is someStreetName
03-26 00:25:27.778 32242-32242/com.tr.ctprot E/frg﹕ onresumefrags
03-26 00:25:28.168 32242-32242/com.tr.ctprot E/ResultActivity﹕ destroyed!
感谢您的帮助!提前谢谢
UPD 1
我的碎片是激活的结果
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode){
case (1):
if (resultCode==-1)
Log.e("INTENT Returned "," and name is "+data.getStringExtra("name"));
}
}
Moar日志=-)
0
我遇到的唯一解决方案是将EditText的TouchListener更改为ClickListener 是: 成为:
edtStreetName.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getActivity().getApplicationContext(),GetAddressActivity.class);
startActivityForResult(intent, 1);
}
});
不知道为什么,但Activity4Result已停止以重新创建自身
edtStreetName.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
Log.e("launch ResultActivity","launched");
Intent intent = new Intent(getActivity().getApplicationContext(),GetAddressActivity.class);
startActivityForResult(intent, 1);
return false;
}
});
edtStreetName.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getActivity().getApplicationContext(),GetAddressActivity.class);
startActivityForResult(intent, 1);
}
});