Fragment中里能手动调用onCreateView()方法吗?
调用的时候参数怎么写呢?
其实就是一个登录的逻辑,在fragment里的onCreateView()中先判断是否登录,未登录就加载一个布局A,然后点击按钮跳转到LoginActivity登录成功之后,finish()掉LoginActivity,回到了fragment里想重新进行判断然后加载登录成功之后的布局B。但是发现回来fragment里时从onStart()方法开始调用了,没执行onCreateView();所以就希望能手动调用onCreateView()。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
按我多年工作经验,没有过手动调用这种做法,这种做法即便有也不合理。这个方法跟onCreate方法一样在创建时被调用。如果你是想实现某个功能只有登录后才可操作:
方法一:你可以这样设计一个静态方法在LoginActivity中如public static boolean isLogin;然后登录成功后在LoginActivity中设置isLogin=true;返回到你的Fragment中。在你的Fragment事件中调用LoginActivity.isLogin判断用户是否登录,然后跳转或展现你想要的数据。如下代码:(希望对你有用)
方法二:
1.Fragment所依赖的activity中:
startActivityForResult(intent, requestCode)或startActivity跳转到LoginActivity
通过该方法回传是否登录成功。然后在Fragment所依赖的activity中调用Fragment的布局方法,当然前提是先设置Fragment的布局操作方法。
相信上面的回答基本够用了,
我再补充几句.
1) 为什么要用 Fragment? 而不是 Activity 作为启动 UI
2) 事件的通信也可以使用 EventBus 及 LocalBroadCast 等.
3) onCreateView 你当然可以手动调用啊. 但是你调用了没有什么用啊. 这个方法只是创建了 View.然后你要通过这个创建的 View 手动将它添加到 UI 树上去吗?
4) 代码逻辑的问题尽量从代码逻辑及各组件通信上去思考解决. 而不是想调用 onCreateView 这种 hack.
5) 如果是在 Activity 的话,你倒是可以根据登录成功之后再调用 setContentView 来设置不同的 UI.
(但是这样也需要处理自动登录期间的 UI 界面)