Android从父级销毁当前视图

时间:2016-11-02 20:24:49

标签: android layout view android-appcompat

我有一个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)这样的子活动中的上一个视图。 ..

任何人都知道我该怎么做? 感谢

1 个答案:

答案 0 :(得分:1)

您实际上可以使用其他视图再次呼叫setContentView。您需要重置所有绑定,并且需要清除On_____Listeners,否则会导致内存泄漏。除此之外,它会准备好你去。

虽然我建议采用另一种方法来改变布局。而是创建一个新的活动,您可以替换当前提交的布局。然后,您可以在用户提交时在锁定活动上调用finish(),而不是担心泄漏。效果会相同,而且会更加通用(在我看来)。