Rumah > Soal Jawab > teks badan
ringa_lee2017-04-17 17:01:11
1.使用replace,替换当前的fragment
2.使用add 和 hide 方法,要显示哪个就显示哪个,其他的则隐藏即可,这样相比于第一种在每次切换时不用每次都去加载一次数据,但是内存消耗上稍大
会加载当前的fragment 和其相邻的Fragment为viewpager滑动做准备
只加载当前的Fragment
建议在选择切换策略时选择第二种
伊谢尔伦2017-04-17 17:01:11
你的1,2问题你完全可以自己打Log实现查看,这样以后印象深刻,更有效果。
至于刷新的不知道你是怎么样的函数,最后一个其实只要在onKeyDown中判断,你把这段代码运用上去应该没什么问题了:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
//防止按一次退出
if (System.currentTimeMillis() - mExitTime > 2000) {
ToastUtils.showShort("再按一次回到桌面");
mExitTime = System.currentTimeMillis();
} else {
finish();
}
return true;
}
return super.onKeyDown(keyCode, event);
}
大家讲道理2017-04-17 17:01:11
finish只是结束当前的activity,让你的所有activity都继承下面这个activity就能实现你想要的效果。当然还有其他方法就得靠你自己查了。
public class BaseActivity extends Activity {
private long exitTime;
BroadcastReceiver exitReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals(ExitUtils.EXIT)) {
finish();
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
IntentFilter filter = new IntentFilter();
filter.addAction(ExitUtils.EXIT);
this.registerReceiver(exitReceiver, filter);
exitTime = System.currentTimeMillis();
}
@Override
protected void onDestroy() {
super.onDestroy();
this.unregisterReceiver(exitReceiver);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK
&& event.getAction() == KeyEvent.ACTION_DOWN) {
if ((System.currentTimeMillis() - exitTime) > 2000) {
Toast.makeText(getApplicationContext(), "再按一次退出程序",
Toast.LENGTH_SHORT).show();
exitTime = System.currentTimeMillis();
} else {
Intent exitIntent = new Intent();
exitIntent.setAction(ExitUtils.EXIT);
getApplicationContext().sendBroadcast(exitIntent);
}
return true;
}
return false;
}
}