2015-10-05 48 views
-3

我在环顾四周成功获得每个列表项目单击的敬酒之后尝试过。我想用另一个listfragment(MyFragmentB)替换现有的listfragment(MyFragment),点击一个列表项。如何在listfragment上的项目被点击时用另一个listfragment替换现有的listfragment?

这里是我的代码:

为fragdesign.java

package m.d.checker; 


import android.os.Bundle; 
import android.support.v4.app.FragmentTransaction; 
import android.support.v4.app.ListFragment; 
import android.support.v7.app.AppCompatActivity; 
import android.view.LayoutInflater; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 
import android.widget.TextView; 
import android.widget.Toast; 





public class fragdesign extends AppCompatActivity { 



public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    final ListView listViewr=(ListView)findViewById(R.id.list); 

    final MyFragment fragment = new MyFragment(); 
    // fragment.setArguments(getIntent().getExtras()); 
    getSupportFragmentManager().beginTransaction().setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN) 
      .add(R.id.fragmentContainer, fragment).commit(); 


} 


public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case android.R.id.home: { 
      finish(); 
      break; 
     } 

     default: { 
      break; 
     } 
    } 
    return true; 
} 

public static class MyFragment extends ListFragment { 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     //View view=inflater.inflate(R.layout.activity_main,container,false); 
     ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.activity_main, container, false); 
     final ArrayAdapter<String> adaptershow = new ArrayAdapter<String> 
       (getActivity(), R.layout.list_layout_structure, R.id.listText, getResources().getStringArray(R.array.LevelListing)); 
     setListAdapter(adaptershow); 
     setRetainInstance(true); 
     String me="Level"; 
     TextView textView =(TextView)rootView.findViewById(R.id.textView2); 
     textView.setText("Select your " + me); 

     final ListView listViewr = (ListView) rootView.findViewById(R.id.list); 
     listViewr.setAdapter(adaptershow); 

     listViewr.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

      } 
     }); 

     return super.onCreateView(inflater, container, savedInstanceState); 
    } 

    public void onListItemClick(ListView l, View v, int position, long id) { 
     super.onListItemClick(l, v, position, id); 
     String item= (String)getListAdapter().getItem(position); 
     if (item.equals("100 Level")){ 


      //please help me out, i want it to open another listFragment (like Myfragment2 that is also a listfragment just like this) which will replace the original one. 



     } 
     if (item.equals("200 Level")){ 
      Toast.makeText(getContext(),"Thank you",Toast.LENGTH_SHORT).show(); 

      //the same for here 
     } 
     if (item.equals("300 Level")){ 
      Toast.makeText(getContext(),"Thank you",Toast.LENGTH_SHORT).show(); 
     } 
     if (item.equals("400 Level")){ 
      Toast.makeText(getContext(),"Thank you",Toast.LENGTH_SHORT).show(); 
     } 
     if (item.equals("500 Level")){ 
      Toast.makeText(getContext(),"Thank you",Toast.LENGTH_SHORT).show(); 
     } 


    } 

    } 

} 


} 

我使用的Android Studio版本1.3.2。

回答

0

尝试这样:

ListFragment fragment = new MyFragmentB(); 
FragmentManager fragmentManager = getFragmentManager(); 
fragmentManager.beginTransaction().replace(layout id you want to replace, fragment).addToBackStack(null).commit(); 
+0

感谢。我发现这很有用 – Cistem