Fragment in android
Fragment in android for isolation.
The main reason we will use fragment is we are trying to implement plug and play modules..
For Example
Note for fragment:
1. Fragment not should be Singleton .
2. We should not use any static property in fragment
3. For communication we must use Interface communicators.
Creating instance in fragment:
public static MainActivity_Recycler_Fragment newInstance() {
return new MainActivity_Recycler_Fragment();
}
using Instance in activity:
MainActivity_Recycler_Fragment.newInstance()
Context in Fragment:
Context mContext;
//Need to change the Cast Activity name on attach with any activity
@Override
public void onAttach(Context context) {
super.onAttach(context);
mContext = context;
}
For Activity in Fragment:
getActivity().getSystemService(Context.SEARCH_SERVICE);
For View in Fragment:
mRecyclerView = getView().findViewById(R.id.listTodo_fragment);
Initial Script for a Fragment v4:
package com.mti.todo_app_with_firebase.UI;
import android.support.v4.app.Fragment;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.SearchView;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
public class MainActivity_Recycler_Fragment extends Fragment {
RecyclerView mRecyclerView;
public static MainActivity_Recycler_Fragment newInstance() {
return new MainActivity_Recycler_Fragment();
}
Context mContext;
//Need to change the Cast Activity name on attach with any activity
@Override
public void onAttach(Context context) {
super.onAttach(context);
mContext = context;
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
setHasOptionsMenu(true);// for having menu function like onCreateOptionMenu in Fragment return inflater.inflate(R.layout.recyclerview_fragment, container, false);
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
mRecyclerView = getView().findViewById(R.id.listTodo_fragment);
}
}
How to replace fragment in Activity:
private void replaceFragment(Bundle savedInstanceState) {
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.replace(R.id.listTodo_frame, MainActivity_Recycler_Fragment.newInstance())
.commitNow();
}
}
How to Add fragment in Activity:
private void initRecyclerViewFragment(Bundle savedInstanceState) {
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.replace(R.id.listTodo_frame, MainActivity_Recycler_Fragment.newInstance())
.commitNow();
}
}
Difference between replace and add:
Recommended replace, if we use add it will keep traces of the fragments added on that container. Therefor when we will press back it will follow back trace
private void initRecyclerViewFragment(Bundle savedInstanceState) {
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.replace(R.id.listTodo_frame, MainActivity_Recycler_Fragment.newInstance())
.commitNow();
}
}
How to Remove Fragment from Activity:
private void removeFragment(){
android.support.v4.app.Fragment fragment=getSupportFragmentManager().findFragmentById(R.id.listTodo_frame);
if(fragment!=null){
getSupportFragmentManager()
.beginTransaction()
.remove(fragment)
.commit();
}
}