我有一个显示来自API的数据的片段,但我不想每次调用该片段时都调用api..所以我从不同的类进行api调用,并调用片段中的方法来更新UI(textViews) 但我得到了 textViews null 异常,但数据是 100%
如果我尝试硬编码 textView.setText("Hello") 它会起作用..
fragment 的任务之一是更改 ui! 您必须更改 Activity 或 Fragment 中的 ui
您必须使用
interface
。你的服务器类别:
public class server {
.
.
.
public void callServer(IServerResponse iResponse){
.
.
.
iResponse.onResponse(//your data such as List or string or json and etc);
}
public interface IServerResponse{
// use parameter type as you want like List or string ,etc..
void onResponse(String data);
}
}
您的片段或活动实现您的界面:
public class SomeFragment extends Fragment implements Server.IServerResponse{
....
@Override
public View onCreateView(...){
...
Server server=new Server();
server.callServer(this);
}
@Override
public void IServerResponse(String data){
textview.SetText(data);
}
}
您应该在您的活动中创建一个 FrameLayout 并使用此代码:
FragmentA newFragment = new FragmentA ();
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.container, newFragment).commit();
然后设置你的文字
String editValueName= editName.getText().toString();
String lastStatus = valueStatus.getText().toString();
newFragment .setText(editValueName, lastStatus);
如果它能达到您想要的输出,请尝试快速修复
在类(youractivity)中使 Textview 静态,其中
textview
起源于
public static TextView textview;
并在片段中
if(youractivity.textView!=null){
youractivity.textView.setText("your desire text");
}