在类外部的片段中设置文本

问题描述 投票:0回答:3

我有一个显示来自API的数据的片段,但我不想每次调用该片段时都调用api..所以我从不同的类进行api调用,并调用片段中的方法来更新UI(textViews) 但我得到了 textViews null 异常,但数据是 100%

如果我尝试硬编码 textView.setText("Hello") 它会起作用..

java android fragment settext
3个回答
1
投票

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);

   }
   
  

  }

0
投票

您应该在您的活动中创建一个 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);

0
投票

如果它能达到您想要的输出,请尝试快速修复
在类(youractivity)中使 Textview 静态,其中

textview
起源于

public static TextView textview;

并在片段中

if(youractivity.textView!=null){       
  youractivity.textView.setText("your desire text");                                         
}
© www.soinside.com 2019 - 2024. All rights reserved.