Android 如何在活动中用另一个片段替换一个片段,并在替换之前执行一些操作?

Android 如何在活动中用另一个片段替换一个片段,并在替换之前执行一些操作?,android,android-fragments,Android,Android Fragments,这是我的主要活动 public class MainActivity extends FragmentActivity implements Fragment1.Comuunicator { Fragment1 f1; Fragment2 f2; FragmentManager manager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState

这是我的主要活动

public class MainActivity extends FragmentActivity implements Fragment1.Comuunicator {

Fragment1 f1;
Fragment2 f2;
FragmentManager manager;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    manager=getFragmentManager();
    f1=(Fragment1) manager.findFragmentById(R.id.frag1);
    f1.setCommmunicator(this);
}
private void replacefragment(View v) {
    Fragment2 frag2 = new Fragment2();
    FragmentTransaction transaction = manager.beginTransaction();   
    transaction.replace(R.id.frag1, frag2, "B");
    transaction.commit();
    //transaction.addToBackStack("tag");
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();
    if (id == R.id.action_settings) {
        return true;
    }
    return super.onOptionsItemSelected(item);
}

@Override
public void respond(int index) {


    f2 = (Fragment2) manager.findFragmentById(R.id.frag2);      

    if(f2!=null&&f2.isVisible()){
        f2.ChangeData(index);

    }
    else{

        replacefragment(getCurrentFocus());

        //          Intent intent = new Intent(this, NextActivity.class);
        //          intent.putExtra("index", index);
        //          startActivity(intent);
    }
}


}
这是我的第一个片段

public class Fragment1 extends Fragment implements OnItemClickListener{
ListView listview;
Comuunicator commmunicator;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    View view = inflater.inflate(R.layout.fragment1_layout, container, false);
    listview = (ListView)view.findViewById(R.id.listView1);
    ArrayAdapter adapter = ArrayAdapter.createFromResource(getActivity(),        R.array.list_array, android.R.layout.simple_list_item_1);
    listview.setAdapter(adapter);
    listview.setOnItemClickListener(this);
    return view;
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    commmunicator.respond(position);
}

public void setCommmunicator(Comuunicator commmunicator) {
    this.commmunicator = commmunicator;
}

public interface Comuunicator{
    public void respond(int index);         
}
这是字符串xml

<?xml version="1.0" encoding="utf-8"?>
<resources>

<string name="app_name">SampleFragmentNew</string>
<string name="hello_world">Hello world!</string>
<string name="action_settings">Settings</string>

<string-array name="list_array">
    <item>List Item 1</item>
    <item>List Item 2</item>
    <item>List Item 3</item>
    <item>List Item 4</item>
    <item>List Item 5</item>
    <item>List Item 6</item>
    <item>List Item 7</item>
    <item>List Item 8</item>
</string-array>
<string-array name="detail_array">
    <item>Detail Item1</item>
    <item>Detail Item2</item>
    <item>Detail Item3</item>
    <item>Detail Item4</item>
    <item>Detail Item5</item>
    <item>Detail Item6</item>``
    <item>Detail Item7</item>
    <item>Detail Item8</item>
</string-array>

</resources>
我想在单击时用细节片段项替换每个列表片段项。如果我使用activity来做的话,它可以正常工作,但是它不能处理片段

<?xml version="1.0" encoding="utf-8"?>
<resources>

<string name="app_name">SampleFragmentNew</string>
<string name="hello_world">Hello world!</string>
<string name="action_settings">Settings</string>

<string-array name="list_array">
    <item>List Item 1</item>
    <item>List Item 2</item>
    <item>List Item 3</item>
    <item>List Item 4</item>
    <item>List Item 5</item>
    <item>List Item 6</item>
    <item>List Item 7</item>
    <item>List Item 8</item>
</string-array>
<string-array name="detail_array">
    <item>Detail Item1</item>
    <item>Detail Item2</item>
    <item>Detail Item3</item>
    <item>Detail Item4</item>
    <item>Detail Item5</item>
    <item>Detail Item6</item>``
    <item>Detail Item7</item>
    <item>Detail Item8</item>
</string-array>

</resources>