Android(java):当试图从"活动"返回到片段时,OnBackPress()会关闭我的应用程



到目前为止,我已经从片段转到了DetailActivity,现在我添加了后退按钮,将我带回到上一个片段。我尝试了下面的代码,但应用程序一直在关闭,而不是返回到片段。这两个代码片段都来自我的代码。

Fragment.java

public class Fragment extends Fragment implements LoaderManager.LoaderCallbacks<Cursor> {

String[] days = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"};

private Button btnNext;


public Fragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment, container, false);
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
btnNext = view.findViewById(R.id.add);
btnNext.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(getContext(),
DetailActivity.class);
startActivity(intent);
getActivity().onBackPressed();
}
});
}
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
return null;
}
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
}
@Override
public void onLoaderReset(Loader<Cursor> loader) {
}

这是我在DetailActivity.java方法中的onBackPressed((:

public void onBackPressed(){
FragmentManager fm = getFragmentManager();
if (fm.getBackStackEntryCount() > 0) {
Log.i("DetailActivity", "popping backstack");
fm.popBackStack();
} else {
Log.i("DetailActivity", "nothing on backstack, calling super");
super.onBackPressed();
}
}

DetailActivity.java:

public class DeatilActivity extends AppCompatActivity {


Button btnBack;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_detail);


btnBack = findViewById(R.id.btnBack);
btnBack.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {

onBackPressed();
}
});
}

/* @Override
public void onBackPressed() {
if (getFragmentManager().getBackStackEntryCount() != 0) {
getFragmentManager().popBackStack();
} else {
super.onBackPressed();
}
} */
@Override
public void onBackPressed(){
FragmentManager fm = getSupportFragmentManager();
if (fm.getBackStackEntryCount() > 0) {
Log.i("DetailActivity", "popping backstack");
fm.popBackStack();
} else {
Log.i("DeatilActivity", "nothing on backstack, calling super");
super.onBackPressed();
}
}
}

有什么想法吗?:(

根据https://developer.android.com/reference/android/app/Activity,调用onBackPressed将完成当前活动,因此如果从启动活动调用它,它将不会返回。删除此呼叫似乎可以解决此处出现的问题。

最新更新