Android 从父级销毁当前视图

Android Destroy current view from parent

我有一个父 activity,它根据这样的检查设置对简历的看法:

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
}
}

此 activity 由 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)并显示子 activity 中的先前视图,如 MainActivity(R.layout.activiyt_main)...

有人知道我该怎么做吗? 谢谢

您实际上可以用不同的视图再次调用 setContentView。您的所有绑定都需要重置,并且您的 On_____Listeners 需要清除,否则您将发生内存泄漏。除此之外,它会准备好供您使用。

尽管我建议使用另一种方法来更改布局。相反,创建一个新的 Activity 来替换您当前提交的布局。然后,不用担心泄漏,您只需在用户提交时在锁 Activity 上调用 finish()。效果是一样的,而且会更通用(在我看来)。