findFragmentById 时出现 NullpointerException
NullpointerException when findFragmentById
我有一个 Activity,其中包含一个 片段。
Activity布局文件:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment class="com.my.ContentFragment"
android:id="@+id/fragment_content"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</FrameLayout>
Java Activity的代码:
import android.support.v4.app.Fragment;
import android.support.v7.app.ActionBarActivity;
public class ContentActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//data from previous Activity
Bundle data = getIntent().getExtras();
Fragment contentFragment = getSupportFragmentManager()
.findFragmentById(R.id.fragment_content);
//Pass data to fragment
/*NullpointerException, contentFragment is null!*/
contentFragment.setArguments(data);
setContentView(R.layout.activity_main);
}
...
}
我试图找到Activity的onCreate()
中的片段,然后将一些数据传递给它。但是当我 findFragmentById(...)
时,我得到了 NullpointerException,为什么?
你应该搬家
setContentView(R.layout.activity_main);
之前
Fragment contentFragment = getSupportFragmentManager().findFragmentById(R.id.fragment_content);
你得到 NPE 因为 findFragmentById(R.id.fragment_content)
找不到 ID 为 fragment_content
.[=14= 的 片段 ]
在将片段添加到 activity 之前,您不能执行 findFragmentById
。当您制作 setContentView
时,Actvitiy
会扩充布局并将其视图添加到当前 window。如果此布局中有 Fragment
,则将其与 xml 中提供的给定 ID 或标签一起添加到 FragmentManager
。只有在这一刻,你才能在那里找到它。所以你要做的就是将 findFragmentById
移到 setContentView
.
下面
我有一个 Activity,其中包含一个 片段。
Activity布局文件:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragment_container"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment class="com.my.ContentFragment"
android:id="@+id/fragment_content"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</FrameLayout>
Java Activity的代码:
import android.support.v4.app.Fragment;
import android.support.v7.app.ActionBarActivity;
public class ContentActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//data from previous Activity
Bundle data = getIntent().getExtras();
Fragment contentFragment = getSupportFragmentManager()
.findFragmentById(R.id.fragment_content);
//Pass data to fragment
/*NullpointerException, contentFragment is null!*/
contentFragment.setArguments(data);
setContentView(R.layout.activity_main);
}
...
}
我试图找到Activity的onCreate()
中的片段,然后将一些数据传递给它。但是当我 findFragmentById(...)
时,我得到了 NullpointerException,为什么?
你应该搬家
setContentView(R.layout.activity_main);
之前
Fragment contentFragment = getSupportFragmentManager().findFragmentById(R.id.fragment_content);
你得到 NPE 因为 findFragmentById(R.id.fragment_content)
找不到 ID 为 fragment_content
.[=14= 的 片段 ]
在将片段添加到 activity 之前,您不能执行 findFragmentById
。当您制作 setContentView
时,Actvitiy
会扩充布局并将其视图添加到当前 window。如果此布局中有 Fragment
,则将其与 xml 中提供的给定 ID 或标签一起添加到 FragmentManager
。只有在这一刻,你才能在那里找到它。所以你要做的就是将 findFragmentById
移到 setContentView
.