2016-03-01 57 views
2

我在使用片段中的相机意图时遇到了问题。我有一个包含片段的活动,我有四个片段。在我的第三部分片段中,我调用了相机Intent。拍摄照片后,应用程序不会仅在第3个片段上恢复,但它也会出现在第1个片段中。你可以看到图片和代码。片段中的相机意图

感谢您的任何解决方案。

代码:

public class CreateAttachment extends Fragment{ 

private RelativeLayout btnBack, btnNext; 
private LinearLayout btnAttachment, btnCapture; 

private static final int CAMERA_REQUEST_CODE = 100; 
public static final int MEDIA_TYPE_IMAGE = 1; 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View view = inflater.inflate(R.layout.create_property_attachment, container, false); 

    btnBack = (RelativeLayout) view.findViewById(R.id.attachment_btnBack); 
    btnBack.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      getFragmentManager().popBackStack(); 
     } 
    }); 

    btnNext = (RelativeLayout) view.findViewById(R.id.attachment_btnNext); 
    btnNext.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      nextFragment(); 
     } 
    }); 

    btnAttachment = (LinearLayout) view.findViewById(R.id.btnAttachment); 
    btnAttachment.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      Intent intent = new Intent(); 
      intent.setType("image/*"); 
      intent.setAction(Intent.ACTION_GET_CONTENT); 
      intent.putExtra("return-data", true); 
      startActivityForResult(Intent.createChooser(intent, "Complete action using"), MEDIA_TYPE_IMAGE); 
     } 
    }); 

    btnCapture = (LinearLayout) view.findViewById(R.id.btnCameraAccess); 
    btnCapture.setOnClickListener(new View.OnClickListener(){ 

     @Override 
     public void onClick(View v) { 
      Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
      startActivityForResult(cameraIntent, CAMERA_REQUEST_CODE); 
     } 
    }); 

    return view; 
} 


@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    if(resultCode == Activity.RESULT_OK && requestCode == MEDIA_TYPE_IMAGE){ 

     Toast.makeText(getActivity(),"Photo is Chosen",Toast.LENGTH_SHORT).show(); 
    } 
    else if (requestCode == CAMERA_REQUEST_CODE && resultCode == Activity.RESULT_OK) { 

     Toast.makeText(getActivity(),"Photo is Captured",Toast.LENGTH_SHORT).show(); 
    } 
    } 
}           

图片: Here is my screenshot for 1st fragment, 3rd fragment, and the issue after take a picture by Camera Intent in the 3rd fragment.

+0

对'btnAttachment'也是同样的事情吗? – Bhargav

+0

对于btnAttachment工作正常。 – Peter

+0

尝试删除行'super.onActivityResult(requestCode,resultCode,data);' – Bhargav

回答

0

感谢您的所有答案。无论如何,我不知道确切的错误是什么,但解决这个问题的方法是在我的第三个片段上重写Activity的这两个函数。

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    Toast.makeText(getActivity(), "Work on onCreate when return into Fragment.", Toast.LENGTH_SHORT).show(); 
} 


@Override 
public void onSaveInstanceState(Bundle outState) { 
    super.onSaveInstanceState(outState); 
} 
0

试试这个

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
       startActivityForResult(intent, 
         CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE); 
在OnActivityResult

删除super.onActivityResult(requestCode, resultCode, data);

@Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 



    } 
+0

这可能是解决方案,但我不知道如何保存和恢复InstanceState。那么,请你分享一下我的例子吗? – Peter

+0

删除了代码行后,它仍显示相同的问题。当我们尝试不止一次地拍摄照片时。 – Peter

0

您的问题可能出现在您的添加/替换片段代码中。你的第一个和第三个片段是重叠的,因为你可能没有隐藏(片段)你的片段用第三个片段替换第一个片段。