-1

我是 android 新手。我需要从片段页面返回 FragmentActivity。

我的工作流程是:

MainActivity->ProfileActivity->ProfilePhotoEditFragment

我需要回去

ProfilePhotoEditFragment -> ProfileActivity

显现

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="16" />

ProfilePhotoEditFragment.java

public class ProfilePhotoEditFragment extends Fragment implements OnClickListener {

ViewUtils mViewUtils;
Bundle mSavedInstanceState;

private OnNavigateProfileListener mOnNavigateProfileListener;
private Button mCancelButton;

public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    Context mContext = getActivity().getApplicationContext();
    mViewUtils = new ViewUtils(mContext);

}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

    mSavedInstanceState = savedInstanceState;

    View view = inflater.inflate(R.layout.fragment_edit_profile_pic, container, false);
    mCancelButton = (Button) view.findViewById(R.id.cancel);
    mCancelButton.setOnClickListener(this);

    return view;
}

@Override
public void onStart() {
    super.onStart();

}

@Override
public void onClick(View view) {

   if (view.getId() == mCancelButton.getId()){
        onBackPressed();

    }

}

public void onBackPressed() {
    // do something on back.
    return;
}

}

4

4 回答 4

2

在 onBackPressed() 中删除当前片段 ProfilePhotoEditFragment

if (getSupportFragmentManager().getBackStackEntryCount() == 0) {

        //( "stackzeo");
    } else {
        getSupportFragmentManager().popBackStack();
        removeCurrentFragment();
        //("stacknotzeo");
    }

..

public void removeCurrentFragment() {

    Fragment currentFrag = (Fragment) getFragmentManager()
            .findFragmentById(R.id.content_frame);

    if (currentFrag != null)
        getFragmentManager().beginTransaction().remove(currentFrag);

    getFragmentManager().beginTransaction().commit();

}

在 FragmentManager 上调用 findFragmentById() 并确定哪个片段在您的 R.id.content_frame 容器中。

于 2013-11-07T05:56:21.700 回答
0

写下来

 public void onBackPressed(){

    super.onBackPressed(); 

 }
于 2013-11-07T06:00:09.123 回答
0

谢谢你们。这是我的工作代码

....

@Override
public void onClick(View view) {
   if (view.getId() == mCancelButton.getId()){
        getActivity().getSupportFragmentManager().popBackStack();
        removeCurrentFragment();
    }

}


public void removeCurrentFragment()
{
    FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction();
    Fragment currentFrag =  getActivity().getSupportFragmentManager().findFragmentById(R.id.fragment_common_profile_layout);

    String fragName = "NONE";
    if (currentFrag!=null)
        fragName = currentFrag.getClass().getSimpleName();

    if (currentFrag != null)
        transaction.remove(currentFrag);
    transaction.commit();

}
于 2013-11-07T06:43:47.217 回答
0
getActivity().onBackPressed();

您应该能够从每个片段中调用此代码。

请检查 getActivity() 是否返回 null。

希望这可以帮助。

于 2015-08-31T13:49:56.020 回答