gpt4 book ai didi

android - 等到 fragment 被添加到 UI

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:20:30 30 4
gpt4 key购买 nike

在我的应用程序中,在横向模式下,我需要附加两个 fragment 。为了做到这一点,第二个 fragment 需要等到第一个 fragment 被附加(添加),然后才被添加。原因是第一个 fragment 需要执行第二个 fragment 需要的功能。我设法通过一个线程做到了这一点,但在这种情况下,它只等待指示的时间量,然后再附加第二个 fragment ,如果第一个 fragment 没有在给定的时间内附加,应用程序将崩溃,因为第二个 fragment 没有必要的数据。

比下面的代码有什么更好的做法(示例)(比如等到第一个 fragment 被附加,而不是在某个时间间隔)? :

getSupportFragmentManager()
.beginTransaction()
.replace(R.id.mainContent, fragment).commit();
Thread thread = new Thread() {
@Override
public void run() {
try {
synchronized (this) {
wait(1000);
}
} catch (InterruptedException e) {

}
if (isLandscape) {
openSecondFragment(mIndex, R.id.rightConent);
}
}
};
thread.start();

非常感谢。

我需要在第一个 fragment 中执行的处理程序:

@SuppressLint("HandlerLeak")
protected void loadAccountList() {

LoadAccountList loadAccountListThread = new LoadAccountList(new Handler() {

@SuppressWarnings("unchecked")
public void handleMessage(Message msg) {
switch (msg.what) {
case LOAD_SUCCESSFUL_CODE:
items = (ArrayList<Account>) msg.obj;
break;
case LOAD_FAILED_IOEXCEPTION_CODE:
getActivity().showDialog(ERROR_DIALOG);
break;
default:
break;
}
}
});
loadAccountListThread.start();

最佳答案

Fragments 生命周期在这里对您有利。根据文档,方法 onStart() 是“当 fragment 对用户可见时调用”,因此我建议您在第一个 fragment 类中执行类似的操作:

public void onStart() {

super.onStart();
((MainActivity)getActivity()).loadSecondFragment();
}

在您的 Activity 中:

public void loadSecondFragment() {
if (isLandscape) {
openSecondFragment(mIndex, R.id.rightConent);
}
}

瞧!尝试任何一种生命周期方法,看看哪种方法最适合您的目的。

关于android - 等到 fragment 被添加到 UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28457015/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com