方法一
@Override
public void onResume() {
super.onResume();
getFocus();
}
private void getFocus() {
if (getView() != null) {
getView().setFocusable(true);
getView().setFocusableInTouchMode(true);
getView().requestFocus();
getView().setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN && keyCode == KeyEvent.KEYCODE_BACK) {
saveData();
return true;
}
return false;
}
});
}
}
private void saveData() {
if (save) {
getActivity().onBackPressed();
} else {
activity.showDailog("保存数据", "数据还未保存, 是否离开此页面?", "离开不保存", "保存数据", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
getActivity().onBackPressed();
}
}, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
update();
}
});
}
}
方法二: 重写activity的onBackPressed()方法
public class PartitionActivity extends BaseActivity {
private PartitionFragment fragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_plan);
fragment = new PartitionFragment();
}
@Override
public void onBackPressed() {
if (null != fragment) {
boolean b = fragment.onBackPressed();
if (b) {
super.onBackPressed();
}
} else {
super.onBackPressed();
}
}
}