Hello everyone hope you are doing well .Here is another article. we all know about fragments basically A Fragment represents a reusable portion of your app's UI.
We easily use onBackPressed and onActivityResult in out Activity but we face difficulty when we use these two in our fragment class .We get no result,So if you facing same difficulty this artcile is for you.
We have to use some tricks to use these methods in our fragment.So lets start :-
First start with onActivityResult() in fragment you have to add these lines in your main Activity class
protected void onActivityResult(int requestCode, int resultCode, Intent data) { Fragment uploadType = getSupportFragmentManager().findFragmentById(android.R.id.content); if (uploadType != null) { uploadType.onActivityResult(requestCode, resultCode, data); } super.onActivityResult(requestCode, resultCode, data); }
in findFragmentById() use can use your fragment id here ,I use android's default fargment id .
now simply add this lines in your fragment class
/** * A simple {@link Fragment} subclass. */ public class MyFragment extends Fragment { public MyFragment() { // Required empty public constructor } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment View view=inflater.inflate(R.layout.fragment_myfragment, container, false); ImageView myImage = (ImageView)view.findViewById(R.id.image); myImage.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(cameraIntent, 1); } }); return view; } @Override public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); if(resultCode== Activity.RESULT_OK) { if(requestCode==1) { // do your stuff here } } } }
You got result now , Right ? .
Now lets come to how we use onBackPressed functionality on fragment backPress. we all know there is no onBackPress method in fragment but we can achieve this by this code snippet.
public class MyFragment extends Fragment { public MyFragment() { // Required empty public constructor } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment View view=inflater.inflate(R.layout.fragment_myfragment, container, false); view.setFocusableInTouchMode(true); view.requestFocus(); view.setOnKeyListener(new View.OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { Log.i("TAG", "keyCode: " + keyCode); if( keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP) { Log.i("TAG", "onKey Back listener is working!!!"); // your stuff here to do onbackpress return true; } return false; } }); return view; } }
That's all guys .Thank you for your time .I you like this article then share this and also do subscribe to this blog.😐😐😐
Comments
Post a Comment