Fragment中里能手动调用onCreateView()方法吗?

发布于 2022-09-06 05:02:20 字数 250 浏览 18 评论 0

调用的时候参数怎么写呢?

其实就是一个登录的逻辑,在fragment里的onCreateView()中先判断是否登录,未登录就加载一个布局A,然后点击按钮跳转到LoginActivity登录成功之后,finish()掉LoginActivity,回到了fragment里想重新进行判断然后加载登录成功之后的布局B。但是发现回来fragment里时从onStart()方法开始调用了,没执行onCreateView();所以就希望能手动调用onCreateView()。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

深海里的那抹蓝 2022-09-13 05:02:20

按我多年工作经验,没有过手动调用这种做法,这种做法即便有也不合理。这个方法跟onCreate方法一样在创建时被调用。如果你是想实现某个功能只有登录后才可操作:
方法一:你可以这样设计一个静态方法在LoginActivity中如public static boolean isLogin;然后登录成功后在LoginActivity中设置isLogin=true;返回到你的Fragment中。在你的Fragment事件中调用LoginActivity.isLogin判断用户是否登录,然后跳转或展现你想要的数据。如下代码:(希望对你有用)

            if (LoginActivity.isLogin) {
                /*startActivity(new Intent(ProfileActivity.this,
                        OrderActivity.class));*/
                startActivity(new Intent(ProfileActivity.this,OrderActivity2.class));
            } else {
                startActivity(new Intent(ProfileActivity.this,
                        LoginActivity.class));
            }

方法二:

1.Fragment所依赖的activity中:

startActivityForResult(intent, requestCode)或startActivity跳转到LoginActivity

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    super.onActivityResult(requestCode, resultCode, data);
}

通过该方法回传是否登录成功。然后在Fragment所依赖的activity中调用Fragment的布局方法,当然前提是先设置Fragment的布局操作方法。

瞄了个咪的 2022-09-13 05:02:20

相信上面的回答基本够用了,
我再补充几句.
1) 为什么要用 Fragment? 而不是 Activity 作为启动 UI
2) 事件的通信也可以使用 EventBus 及 LocalBroadCast 等.
3) onCreateView 你当然可以手动调用啊. 但是你调用了没有什么用啊. 这个方法只是创建了 View.然后你要通过这个创建的 View 手动将它添加到 UI 树上去吗?
4) 代码逻辑的问题尽量从代码逻辑及各组件通信上去思考解决. 而不是想调用 onCreateView 这种 hack.

5) 如果是在 Activity 的话,你倒是可以根据登录成功之后再调用 setContentView 来设置不同的 UI.
(但是这样也需要处理自动登录期间的 UI 界面)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文