从片段中完成当前活动

我在一个活动中使用了一个片段作为导航抽屉。 它包含button,当单击开始新的活动(片段中的startActivity只是调用当前活动的startActivity)。

对于我的生活,我似乎无法弄清楚如何在开始新的活动之后完成当前的活动。

我正在寻找在片段中实现这样的事情:

@Override public void onClick(View view) { // TODO Auto-generated method stub if (view == mButtonShows) { Intent intent = new Intent(view.getContext(), MyNewActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); finish(); } } 

但似乎Fragment.class没有实现finish()(就像它实现了startActivity(…))。

当他们开展第二项活动的时候,我希望活动背景清除。 (因此,从新的活动中压回来,在技术上将它们放回到发射器)

当使用片段时,不要使用this或者引用上下文,总是使用getActivity() 。 你应该打电话

 getActivity().finish(); 

从片段完成您的活动。

实际上…

我不会有片段尝试完成活动。 在我看来,这太过分了。 相反,我会在这里使用指南: http : //developer.android.com/training/basics/fragments/communicating.html

让Fragment定义一个Activity必须实现的接口。 打电话给活动,然后让活动决定如何处理这些信息。 如果活动希望完成,那么它可以。

正如Jon F Hancock所提到的,这是一个片段如何通过暗示活动结束来“closures”活动。 这使得片段可移植,这是他们的原因。 如果您在不同的活动中使用它,则可能不想closures该活动。

下面的代码是一个活动和片段,其中有一个保存和取消button片段。

PlayerActivity

 public class PlayerActivity extends Activity implements PlayerInfo.PlayerAddListener { public void onPlayerCancel() { // Decide if its suitable to close the activity, //eg is an edit being done in one of the other fragments? finish(); } } 

PlayerInfoFragment,其中包含调用活动需要实现的接口。

 public class PlayerInfoFragment extends Fragment { private PlayerAddListener callback; // implemented in the Activity @Override public void onAttach(Activity activity) { super.onAttach(activity); callback= (PlayerAddListener) activity; } public interface PlayerAddListener { public void onPlayerSave(Player p); // not shown in impl above public void onPlayerCancel(); } public void btnCancel(View v) { callback.onPlayerCancel(); // the activity's implementation } } 

每次我使用完成closures片段,整个活动closures。 根据文件,片段应该保持,只要父母的活动仍然存在。

相反,我发现我可以通过使用以下语句将视图更改回父活动:setContentView(R.layout.activity_main);

这使我回到父活动。

我希望这可以帮助别人谁可能正在寻找这个。

很简单…

1-只需通过片段中的getActivity()获取活动

2-然后调用finish();

所以只需getActivity().finish(); 将完成家长的活动。

您应该使用getActivity()方法来完成片段中的活动。

 getActivity().finish(); 

尝试使用这个

Fragment.class没有实现finish()

当使用片段时,不要使用这个或者引用上下文,总是使用getActivity() 。 你应该打电话