Java 更改ViewPager中片段的文本
这是我在Java 更改ViewPager中片段的文本,java,android,android-fragments,Java,Android,Android Fragments,这是我在ViewPager中更改片段的代码。片段只有一个文本视图。基本上,我只是在慢慢地浏览我名字中的字母表。因此,根据索引,我必须在片段的TextView中设置文本 在上面的代码中,程序会出现一个NullPointerException,因为布局还没有膨胀,所以我猜想 更改片段内容的正确方法是什么是否有回调方法让我知道它已变为可见?没有回调。您可以在创建片段时将文本作为参数发送到片段,并在片段内部设置文本 比如: @Override public Fragment getItem(int po
ViewPager
中更改片段的代码。片段只有一个文本视图。基本上,我只是在慢慢地浏览我名字中的字母表。因此,根据索引,我必须在片段的TextView
中设置文本
在上面的代码中,程序会出现一个NullPointerException
,因为布局还没有膨胀,所以我猜想
更改
片段内容的正确方法是什么是否有回调方法让我知道它已变为可见?没有回调。您可以在创建片段时将文本作为参数发送到片段,并在片段内部设置文本
比如:
@Override
public Fragment getItem(int position) {
CharacterFragment fragment = new CharacterFragment();
View rootView = fragment.getView();
TextView character = (TextView) rootView.findViewById(R.id.character);
character.setText(name[position]);
return fragment;
}
您的CharacterFragment.newInstance(字符串名称)
方法如下所示:
@Override
public Fragment getItem(int position) {
CharacterFragment fragment = CharacterFragment.newInstance(name[position]);
View rootView = fragment.getView();
return fragment;
}
然后,在onCreateView()
中,通过getArguments()
方法获得参数,并获得带有键NAME\u ARG的字符串。而你拥有它!有意义吗?没有回调。您可以在创建片段时将文本作为参数发送到片段,并在片段内部设置文本
比如:
@Override
public Fragment getItem(int position) {
CharacterFragment fragment = new CharacterFragment();
View rootView = fragment.getView();
TextView character = (TextView) rootView.findViewById(R.id.character);
character.setText(name[position]);
return fragment;
}
您的CharacterFragment.newInstance(字符串名称)
方法如下所示:
@Override
public Fragment getItem(int position) {
CharacterFragment fragment = CharacterFragment.newInstance(name[position]);
View rootView = fragment.getView();
return fragment;
}
然后,在onCreateView()
中,通过getArguments()
方法获得参数,并获得带有键NAME\u ARG的字符串。而你拥有它!有意义吗?没有回调。您可以在创建片段时将文本作为参数发送到片段,并在片段内部设置文本
比如:
@Override
public Fragment getItem(int position) {
CharacterFragment fragment = new CharacterFragment();
View rootView = fragment.getView();
TextView character = (TextView) rootView.findViewById(R.id.character);
character.setText(name[position]);
return fragment;
}
您的CharacterFragment.newInstance(字符串名称)
方法如下所示:
@Override
public Fragment getItem(int position) {
CharacterFragment fragment = CharacterFragment.newInstance(name[position]);
View rootView = fragment.getView();
return fragment;
}
然后,在onCreateView()
中,通过getArguments()
方法获得参数,并获得带有键NAME\u ARG的字符串。而你拥有它!有意义吗?没有回调。您可以在创建片段时将文本作为参数发送到片段,并在片段内部设置文本
比如:
@Override
public Fragment getItem(int position) {
CharacterFragment fragment = new CharacterFragment();
View rootView = fragment.getView();
TextView character = (TextView) rootView.findViewById(R.id.character);
character.setText(name[position]);
return fragment;
}
您的CharacterFragment.newInstance(字符串名称)
方法如下所示:
@Override
public Fragment getItem(int position) {
CharacterFragment fragment = CharacterFragment.newInstance(name[position]);
View rootView = fragment.getView();
return fragment;
}
然后,在onCreateView()
中,通过getArguments()
方法获得参数,并获得带有键NAME\u ARG的字符串。而你拥有它!有意义吗?这不是使用getView()
的正确方法。实现你想要的东西的方法有点不同。为此,应将字符串(在本例中为name[position]
)传递给该方法但是您应该记住,片段不应该用它们的构造函数实例化,而是创建一个静态方法,我将向您展示:
public static CharacterFragment.newInstance(String name) {
CharacterFragment fragment = new CharacterFragment();
Bundle args = new Bundle();
args.put("NAME_ARG", name);
fragment.setArguments(args);
return fragment;
}
然后,在CharacterFragment.java
@Override
public Fragment getItem(int position) {
CharacterFragment fragment = CharacterFragment.newInstance(name[position]);
return fragment;
}
这不是使用getView()
的正确方法。实现你想要的东西的方法有点不同。为此,应将字符串(在本例中为name[position]
)传递给该方法但是您应该记住,片段不应该用它们的构造函数实例化,而是创建一个静态方法,我将向您展示:
public static CharacterFragment.newInstance(String name) {
CharacterFragment fragment = new CharacterFragment();
Bundle args = new Bundle();
args.put("NAME_ARG", name);
fragment.setArguments(args);
return fragment;
}
然后,在CharacterFragment.java
@Override
public Fragment getItem(int position) {
CharacterFragment fragment = CharacterFragment.newInstance(name[position]);
return fragment;
}
这不是使用getView()
的正确方法。实现你想要的东西的方法有点不同。为此,应将字符串(在本例中为name[position]
)传递给该方法但是您应该记住,片段不应该用它们的构造函数实例化,而是创建一个静态方法,我将向您展示:
public static CharacterFragment.newInstance(String name) {
CharacterFragment fragment = new CharacterFragment();
Bundle args = new Bundle();
args.put("NAME_ARG", name);
fragment.setArguments(args);
return fragment;
}
然后,在CharacterFragment.java
@Override
public Fragment getItem(int position) {
CharacterFragment fragment = CharacterFragment.newInstance(name[position]);
return fragment;
}
这不是使用getView()
的正确方法。实现你想要的东西的方法有点不同。为此,应将字符串(在本例中为name[position]
)传递给该方法但是您应该记住,片段不应该用它们的构造函数实例化,而是创建一个静态方法,我将向您展示:
public static CharacterFragment.newInstance(String name) {
CharacterFragment fragment = new CharacterFragment();
Bundle args = new Bundle();
args.put("NAME_ARG", name);
fragment.setArguments(args);
return fragment;
}
然后,在CharacterFragment.java
@Override
public Fragment getItem(int position) {
CharacterFragment fragment = CharacterFragment.newInstance(name[position]);
return fragment;
}
问题是对TextView
的引用总是返回为空。我尝试在片段的onResume()
中使用getView().findViewById(R.id.myTextView)
,但返回值始终为空。编辑答案以提供更多详细信息。其思想是在创建片段时将字符串作为参数发送,然后在onCreateView
中从参数中获取字符串并将其设置为TextView.Works!一个简单的问题:如何使文本足够大,以便无论屏幕大小如何,每个字符都能填满屏幕?:)我不明白。。。你想让每个片段填满屏幕,只包含一个字母吗?是的。基本上,我只是举一个简单的例子来学习ViewPager
。仅此而已。问题是对TextView
的引用总是返回为空。我尝试在片段的onResume()
中使用getView().findViewById(R.id.myTextView)
,但返回值始终为空。编辑答案以提供更多详细信息。其思想是在创建片段时将字符串作为参数发送,然后在onCreateView
中从参数中获取字符串并将其设置为TextView.Works!一个简单的问题:如何使文本足够大,以便无论屏幕大小如何,每个字符都能填满屏幕?:)我不明白。。。你想让每个片段填满屏幕,只包含一个字母吗?是的。基本上,我只是举一个简单的例子来学习ViewPager
。仅此而已。问题是对TextView
的引用总是返回为空。我尝试使用