在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Android/ Fragment中里能手動(dòng)調(diào)用onCreateView()方法嗎?

Fragment中里能手動(dòng)調(diào)用onCreateView()方法嗎?

調(diào)用的時(shí)候參數(shù)怎么寫呢?

其實(shí)就是一個(gè)登錄的邏輯,在fragment里的onCreateView()中先判斷是否登錄,未登錄就加載一個(gè)布局A,然后點(diǎn)擊按鈕跳轉(zhuǎn)到LoginActivity登錄成功之后,finish()掉LoginActivity,回到了fragment里想重新進(jìn)行判斷然后加載登錄成功之后的布局B。但是發(fā)現(xiàn)回來fragment里時(shí)從onStart()方法開始調(diào)用了,沒執(zhí)行onCreateView();所以就希望能手動(dòng)調(diào)用onCreateView()。

回答
編輯回答
女流氓

按我多年工作經(jīng)驗(yàn),沒有過手動(dòng)調(diào)用這種做法,這種做法即便有也不合理。這個(gè)方法跟onCreate方法一樣在創(chuàng)建時(shí)被調(diào)用。如果你是想實(shí)現(xiàn)某個(gè)功能只有登錄后才可操作:
方法一:你可以這樣設(shè)計(jì)一個(gè)靜態(tài)方法在LoginActivity中如public static boolean isLogin;然后登錄成功后在LoginActivity中設(shè)置isLogin=true;返回到你的Fragment中。在你的Fragment事件中調(diào)用LoginActivity.isLogin判斷用戶是否登錄,然后跳轉(zhuǎn)或展現(xiàn)你想要的數(shù)據(jù)。如下代碼:(希望對(duì)你有用)

            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跳轉(zhuǎn)到LoginActivity

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

通過該方法回傳是否登錄成功。然后在Fragment所依賴的activity中調(diào)用Fragment的布局方法,當(dāng)然前提是先設(shè)置Fragment的布局操作方法。

2017年12月5日 16:52
編輯回答
尋仙

相信上面的回答基本夠用了,
我再補(bǔ)充幾句.
1) 為什么要用 Fragment? 而不是 Activity 作為啟動(dòng) UI
2) 事件的通信也可以使用 EventBus 及 LocalBroadCast 等.
3) onCreateView 你當(dāng)然可以手動(dòng)調(diào)用啊. 但是你調(diào)用了沒有什么用啊. 這個(gè)方法只是創(chuàng)建了 View.然后你要通過這個(gè)創(chuàng)建的 View 手動(dòng)將它添加到 UI 樹上去嗎?
4) 代碼邏輯的問題盡量從代碼邏輯及各組件通信上去思考解決. 而不是想調(diào)用 onCreateView 這種 hack.

5) 如果是在 Activity 的話,你倒是可以根據(jù)登錄成功之后再調(diào)用 setContentView 來設(shè)置不同的 UI.
(但是這樣也需要處理自動(dòng)登錄期間的 UI 界面)

2017年3月8日 13:50