gpt4 book ai didi

android - IllegalStateException fragment 在方向更改后未创建 View

转载 作者:行者123 更新时间:2023-11-30 01:56:37 25 4
gpt4 key购买 nike

我有一个应用程序有一个主要 Activity ,用户可以从中选择一个项目。该选择会调出一个 fragment (TracksActivityFragment),它本身就是另一个列表。选择该列表中的一项时,将添加一个 fragment ,该 fragment 是 DialogFragment。到目前为止一切顺利,但是当我旋转设备时,AFragment 的 onCreate() 被调用,然后 DailogFragment 的 onCreate() 被调用,然后它死于 IllegalStateException 表示它死于 AFragment 的 Activity 行 20 (setContentView)。

这是该 Activity 的一部分,其中包含有问题的行:

public class TracksActivity extends AppCompatActivity
{
private String mArtistName;

@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tracks); //DIES HERE

这里是fragment的onCreate

@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);

if(savedInstanceState != null)
{
//We've got data saved. Reconstitute it
mTrackRowItemList = savedInstanceState.getParcelableArrayList(KEY_ITEMS_LIST);
}
}

DialogFragmentTracksFragment 中创建,如下所示:

PlayerFragment fragment = PlayerFragment.newInstance(mTrackRowItemList, i, mArtistBitmapFilename);

// The device is smaller, so show the fragment fullscreen
FragmentTransaction transaction = fragMan.beginTransaction();

// For a little polish, specify a transition animation
transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);

// To make it fullscreen, use the 'content' root view as the container
// for the fragment, which is always the root view for the activity
transaction.add(android.R.id.content, fragment).addToBackStack(null).commit();

这是 DialogFragment 的 onCreate

@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);

if (savedInstanceState != null)
{
//We've got data saved. Reconstitute it
if (mPlayer != null)
{
mPlayer.seekTo(savedInstanceState.getInt(KEY_SONG_POSITION));
}
}
}

不确定为什么它会返回到 TracksFragment 因为它有 DialogFragment 在旋转时处于 Activity 状态,但既然是这样,我似乎需要重新创建整个 DialogPlayer 对象,但它似乎在调用其 onCreate 时保留它。

有人知道这里需要做什么吗?

最佳答案

好的,之前有人问过这个问题,但我不考虑解决方案......我不应该。

出于某种原因,Android 希望 Tracks 布局 XML 使用 FrameLayout 而不是 fragment 。

因此,只需在布局 xml 文件中将 fragment 替换为 FrameLayout 即可。

关于android - IllegalStateException fragment 在方向更改后未创建 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32105206/

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