2016-07-17 20 views
2
füllt

Ich habe eine Mainactivity und andere Fragmente, was ich will ist, dass mit nur dieser einzigen Aktivität, zeige ich ein Standardfragment in Aktivität und dann, wenn Benutzer auf Navigation Schublade dann klicken Fragmente nach der dieser Punkt auf der gleichen, aber mit unterschiedlichen Informationen füllen müssen, ich viel gesucht hatte, aber nicht die richtige Lösung dafür bekam, ich bin Einfügen meine mainactivity Klasse hier,Wie man eine Hauptaktivität einstellt und Fragmente in Android

public class MainActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener, FragmentOne.OnFragmentInteractionListener, 
FragmentTwo.OnFragmentInteractionListener { 

    private ListView mDrawerList; 
    private String[] mNavigationDrawerItemTitles; 
    Toolbar toolbar; 

    private SliderLayout mDemoSlider; 

    DrawerLayout drawer; 
    private CharSequence mDrawerTitle; 
    private CharSequence mTitle; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     mTitle = mDrawerTitle = getTitle(); 
     setSupportActionBar(toolbar); 
    drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
     NavigationView navView = (NavigationView) findViewById(R.id.nav_right_view); 
navView.setNavigationItemSelectedListener(this); 

navView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { 
       @Override 
       public boolean onNavigationItemSelected(MenuItem item) { 
        // Handle Right navigation view item clicks here. 
        int id = item.getItemId(); 
        Fragment fragment = null; 
        Class fragmentClass = null; 


       if (id == R.id.nav_settings) { 
        fragmentClass = first.class; 

       } else if (id == R.id.nav_logout) { 
        fragmentClass = secnd.class; 

       } try { 
        fragment = (Fragment) fragmentClass.newInstance(); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 



       FragmentManager fragmentManager = getSupportFragmentManager(); 
       fragmentManager.beginTransaction().replace(R.id.flContent, fragment).commit(); 
       item.setChecked(true); 

       setTitle(item.getTitle()); 

       DrawerLayout mDrawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
       mDrawer.closeDrawers(); 
       return true; 
      } 
     }); 
    } 

Code für das erste Fragment Klasse hier,

public class first extends Fragment { 

    private static final String ARG_PARAM1 = "param1"; 
    private static final String ARG_PARAM2 = "param2"; 


    private String mParam1; 
    private String mParam2; 

    private OnFragmentInteractionListener mListener; 

    public first() { 
     // Required empty public constructor 
    } 

    /** 
    * Use this factory method to create a new instance of 
    * this fragment using the provided parameters. 
    * 
    * @param param1 Parameter 1. 
    * @param param2 Parameter 2. 
    * @return A new instance of fragment FragmentOne. 
    */ 
    // TODO: Rename and change types and number of parameters 
    public static first newInstance(String param1, String param2) { 
     FragmentOne fragment = new FragmentOne(); 
     Bundle args = new Bundle(); 
     args.putString(ARG_PARAM1, param1); 
     args.putString(ARG_PARAM2, param2); 
     fragment.setArguments(args); 
     return fragment; 
    } 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     if (getArguments() != null) { 
      mParam1 = getArguments().getString(ARG_PARAM1); 
      mParam2 = getArguments().getString(ARG_PARAM2); 
     } 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     // Inflate the layout for this fragment 
     return inflater.inflate(R.layout.fragment_fragment_one, container, false); 
    } 

    // TODO: Rename method, update argument and hook method into UI event 
    public void onButtonPressed(Uri uri) { 
     if (mListener != null) { 
      mListener.onFragmentInteraction(uri); 
     } 
    } 

    @Override 
    public void onAttach(Context context) { 
     super.onAttach(context); 
     if (context instanceof OnFragmentInteractionListener) { 
      mListener = (OnFragmentInteractionListener) context; 
     } else { 
      throw new RuntimeException(context.toString() 
        + " must implement OnFragmentInteractionListener"); 
     } 
    } 

    @Override 
    public void onDetach() { 
     super.onDetach(); 
     mListener = null; 
    } 

    /** 
    * This interface must be implemented by activities that contain this 
    * fragment to allow an interaction in this fragment to be communicated 
    * to the activity and potentially other fragments contained in that 
    * activity. 
    * <p/> 
    * See the Android Training lesson <a href= 
    * "http://developer.android.com/training/basics/fragments/communicating.html" 
    * >Communicating with Other Fragments</a> for more information. 
    */ 
    public interface OnFragmentInteractionListener { 
     // TODO: Update argument type and name 
     void onFragmentInteraction(Uri uri); 
    } 
} 

Vielen Dank im Voraus

Antwort

1

Zur Lösung Ihres Problems verwende ich nur Ihren Code und einige Verbesserungen, verwenden Sie einfach den erforderlichen Code in Ihrer Aktivitätsdatei.

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     mTitle = mDrawerTitle = getTitle(); 
     setSupportActionBar(toolbar); 
///it is required code 
    if (savedInstanceState == null) { 
     Fragment fragment = null; 
     Class fragmentClass = null; 
     fragment = new Fragmentforslider(); 
     fragmentClass= FragmentOne.class; 
     try { 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

     FragmentManager fragmentManager = getSupportFragmentManager(); 
     fragmentManager.beginTransaction().replace(R.id.flContent, fragment).commit(); 
    } 

    drawer = (DrawerLayout) findViewById(R.id.drawer_layout); 
+0

Ich versuche für Ihren Vorschlag –