我有一个Parent活动,根据这样的一些检查在Resume上设置一个视图:
public class AppLockActivity extends AppCompatActivity {
@BindView(R.id.btnSubmit)
Button submitButton;
private static final String TAG = "AppLockActivity";
private static TimeElapsed timeElapsedInstance;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
timeElapsedInstance = TimeElapsed.getInstance();
timeElapsedInstance.resetTime();
timeElapsedInstance.setStartTime();
}
@Override
protected void onResume() {
super.onResume();
//check if app has passed a time threshold
if(timeElapsedInstance.getStartTime() != 0){
timeElapsedInstance.setEndTime(Calendar.getInstance().getTimeInMillis());
long threshold = timeElapsedInstance.getEndTime()-timeElapsedInstance.getStartTime();
Log.d(TAG,"Threshold : "+threshold);
//Current timeout threshold set to 30s
if(threshold>30000){
setContentView(R.layout.activity_app_lock);
ButterKnife.bind(this);
}else{
}
}
}
@OnClick(R.id.btnSubmit) void onSubmit() {
//destroy current(Parent) view and show the previous
}
}
此活动由MainAcitivty等其他活动扩展......
public class MainActivity extends AppLockActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
setContentView(R.layout.activity_main);
}
}
当应用程序进入后台并恢复时,将调用onResume函数,并根据检查设置新视图 - R.layout.activity_app_lock。我想要做的是点击此视图中的提交按钮我要销毁当前视图即(R.layout.activity_app_lock)并显示像MainActivity(R.layout.activiyt_main)这样的子活动中的上一个视图。 ..
任何人都知道我该怎么做? 感谢
答案 0 :(得分:1)
您实际上可以使用其他视图再次呼叫setContentView
。您需要重置所有绑定,并且需要清除On_____Listeners
,否则会导致内存泄漏。除此之外,它会准备好你去。
虽然我建议采用另一种方法来改变布局。而是创建一个新的活动,您可以替换当前提交的布局。然后,您可以在用户提交时在锁定活动上调用finish()
,而不是担心泄漏。效果会相同,而且会更加通用(在我看来)。