我在使用 fragment 时遇到问题。事实上,我正在尝试将一些参数从我的 Activity 传递给 Fragment。问题是我的 getArguments()
调用总是返回 null。这是我的代码:
相册用户.java :
public class AlbumUser extends AppCompatActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_album_user);
String albumId = getIntent().getStringExtra("albumId");
String albumName = getIntent().getStringExtra("albumName");
String albumAuthor = getIntent().getStringExtra("albumAuthor");
String coverUrl = getIntent().getStringExtra("coverUrl");
getFragmentManager().beginTransaction().replace(R.id.fragmentAlbum, Album.newInstance(albumId,albumName,albumAuthor,coverUrl)).commit();
}
}
相册.java :
public class Album extends Fragment {
private String albumId;
private String albumName;
private String albumAuthor;
private String coverUrl;
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
view = inflater.inflate(R.layout.activity_album, container, false);
Bundle args = getArguments();
albumId = args.getString("albumId");
albumName = args.getString("albumName");
albumAuthor = args.getString("albumAuthor");
coverUrl = args.getString("coverUrl");
return view;
)
public static Album newInstance(final String albumId, final String albumName, final String albumAuthor, final String coverUrl) {
final Album album = new Album();
final Bundle bundle = new Bundle();
bundle.putString("albumId", albumId);
bundle.putString("albumName", albumName);
bundle.putString("albumAuthor", albumAuthor);
bundle.putString("coverUrl", coverUrl);
album.setArguments(bundle);
return album;
}
}
Activity 相册.xml:
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context=".MainActivity">
<FrameLayout
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<fragment
android:id="@+id/fragmentAlbum"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
class="com.example.jeff.facebookphotocast.Album" />
<include layout="@layout/toolbar"/>
</FrameLayout>
</android.support.v4.widget.DrawerLayout>
请帮帮我,我快死了^^ 谢谢:)
最佳答案
布局 XML
<fragment
android:id="@+id/fragmentAlbum"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
class="com.example.jeff.facebookphotocast.Album" />
实例化您的 Album
fragment ,不带任何参数。这就是 getArguments()
返回 null 的原因。
如果您想始终为您的 fragment 提供一些参数,请将这部分布局替换为例如一个空的 FrameLayout
容器,并使用 FragmentTransaction#add()
将带有参数的 fragment 放入容器中。
关于java - getArguments() 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31168549/