Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android ActivityResult重新创建,意图在第二次发射尝试期间起作用_Android_Fragment - Fatal编程技术网

Android ActivityResult重新创建,意图在第二次发射尝试期间起作用

Android ActivityResult重新创建,意图在第二次发射尝试期间起作用,android,fragment,Android,Fragment,我彻底阅读了相关主题,但没有找到解决方案。 我有一个碎片活动,其中有几个碎片。在第二个片段中,我渴望在editText touch上启动一个活动结果 edtStreetName.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { Intent inte

我彻底阅读了相关主题,但没有找到解决方案。 我有一个碎片活动,其中有几个碎片。在第二个片段中,我渴望在editText touch上启动一个活动结果

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);

            }
        });