Cԃա*_*ԃաԃ 29 android textview android-fragments
我找不到如何textview从一个改变片段Activity.我有4个文件:
MainActivity.java
activity_main.xml
FragmentClass.java
frag_class.xml
Run Code Online (Sandbox Code Playgroud)
frag_class.xml有textView,我想从MainActivity.java更改文本.FragmentClass扩展了Fragment,这个片段显示在MainActivity FragmentClass中:
public void changeText(String text){
TextView t = (TextView) this.getView().findViewById(R.id.tView);
t.setText(text);
}
Run Code Online (Sandbox Code Playgroud)
在MainActivity中我尝试了这个:
FragmentClass fc = new FragmentClass();
fc.changeText("some text");
Run Code Online (Sandbox Code Playgroud)
但遗憾的是,这段代码给了我NullPointerException,fc.changeText("some text");
我也尝试直接从MainActivity更改文本:
TextView t = (TextView) this.getView().findViewById(R.id.tView);
t.setText(text);
Run Code Online (Sandbox Code Playgroud)
哪个失败了.
[编辑] 完整的代码在这里
Lal*_*ani 11
你可以通过使用找到Fragment的实例,
对于支持库,
YourFragment fragment_obj = (YourFragment)getSupportFragmentManager().
findFragmentById(R.id.fragment_id);
Run Code Online (Sandbox Code Playgroud)
其他
YourFragment fragment_obj = (YourFragment)getFragmentManager().
findFragmentById(R.id.fragment_id);
Run Code Online (Sandbox Code Playgroud)
然后在Fragment中创建一个方法来更新你TextView并使用fragment_objlike 调用该方法,
fragment_obj.updateTextView();
Dar*_*ryn 11
从activity对Fragment通过Fragment Transaction:
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public static void changeFragmentTextView(String s) {
Fragment frag = getFragmentManager().findFragmentById(R.id.yourFragment);
((TextView) frag.getView().findViewById(R.id.textView)).setText(s);
}
}
Run Code Online (Sandbox Code Playgroud)
@Lalit答案是正确的,但我发现你不需要创建像fragment_obj.updateTextView();这样的函数.我将所有视图设置为类级别对象,并能够直接更新textview.
fragmentRegister.textViewLanguage.setText("hello mister how do you do");
Run Code Online (Sandbox Code Playgroud)
注意:如果您需要执行多个操作,那么可以使用功能.
| 归档时间: |
|
| 查看次数: |
56880 次 |
| 最近记录: |