Android Activity在删除时会侦听片段

时间:2014-08-12 06:28:41

标签: java android listview android-fragments

我需要监听我的片段,当它从处理片段的活动中自我片段删除它。怎么做?

我有一个扩展ActionBarActivity的活动,其布局如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <!-- Framelayout to display Fragments --> 
    <FrameLayout
        android:id="@+id/result_search"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
    </FrameLayout>

    <ListView 
        android:id="@+id/activity_googlecards_listview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#e2e2e2"
        android:clipToPadding="false"
        android:divider="@null"
        android:dividerHeight="16dp"
        android:fadingEdge="none"
        android:padding="16dp"
        android:scrollbarStyle="outsideOverlay"
        android:visibility="visible" />

在我的listview上的onItemClik,它应该显示如下的其他片段:

public void onItemClick(AdapterView<?> parent, View view, int position, long id){
    mUpdateAdvertisementFragment = new UpdateAdvertisementFragment();

    Bundle extras = new Bundle();

    extras.putString(TAG_ADVERTISEMENT_ID, advertisementData.get(position).getAdvertisementID().toString());                                                    
    mUpdateAdvertisementFragment.setArguments(extras);

    fragmentManager.beginTransaction().replace(R.id.result_search, mUpdateAdvertisementFragment).addToBackStack(null).commit();
}

在我的片段中,我有一个按钮,可以删除它自己的片段

@Override
    public void onClick(View v) {
        FragmentManager fragmentManager = getFragmentManager();

        switch(v.getId()){
            case R.id.back_button :
                // back button              
                fragmentManager.beginTransaction().remove(this).commit();
                break;

这里是我的片段布局

<Button
       android:id="@+id/back_button"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_margin="10dp"
       android:drawableLeft="@drawable/ic_action_back"
       android:gravity="left|center_vertical"
       style="?android:attr/buttonBarButtonStyle" 
       android:text="@string/back_button_to_search_result"/>

</LinearLayout>

我的情景:
1.用户点击片段
后的后退按钮 2.片段自行删除 3.返回活动
4.从web服务器同步listview中的数据

更新: 我的活动有同步功能

public void syncData(){
        // init progress dialog
        dialog = ProgressDialog.show(ListAdvertisementActivity.this, "", "Getting required data...", true);

所以,我需要听取我的片段,当它片段被自己删除时。怎么做?我应该需要一个界面吗?你能给我一些代码片段吗?谢谢。

2 个答案:

答案 0 :(得分:0)

在您想要自行删除的片段中尝试此操作

public void onDestroy(){

  super.onDestroy();
  ((YourActivityClassName)getActivity()).syncData();
}

答案 1 :(得分:0)

尝试在片段的方法syncData中调用onDetach()函数:)