java - 如何从另一个类访问 fragment 类中显示的 TextView 和进度条

标签 java android

我正在从另一个类的 fragment 中调用一个方法。在该方法调用之后,我想更改一些 TextView 和进度条的可见性。但我无法实现这一目标。而且我不知道如何从另一个类访问 fragment 类。因为我正在从另一个类调用 fragment 类中的方法,所以不会调用 oncreateview。请任何人帮我解决这个问题。

这是我的 fragment 类

public class MyClass extends androidx.fragment.app.Fragment implements MoneyListener{
  private TextView moneyTv;
private ProgressBar pBar;
 @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        super.onCreateView(inflater, container, savedInstanceState);

        view = inflater.inflate(R.layout.activity_call_packages, container, false);
       pBar=view.findViewById(R.id.pBar);
        moneyTv=view.findViewById(R.id.money);
getMoneyFromRtrofit(getContext);
       pBar.setVisibility(View.VISIBLE);
}
/* this method is for getting response from retrofit and setting in money text view
I want to pass only context here, from any class and send request to retrofit and again want to update the value in money Textview.
While calling this method from another class getting -->Attempt to invoke virtual method 'void android.widget.ProgressBar.setVisibility(int)' on a null object reference*/
public void getMoneyFromRtrofit(Context context)
{
RetrofitRequest retrofitReq=new RetrofitRequest(context,this/*passing money listener here*/);
retrofitReq.getMoney();
}
@Override
    public void onSuccesfulResponse(MoneyObject money) {
         pBar.setVisibility(View.GONE);
     moneyTv.setText(money.getBalance);

    }
}

这是我的另一个类,

public class Updated extends Activity implements RechargeListener{
 @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_update);
        }
  @Override
    public void getSuccessResponse(String message) {
    MyClass myClass=new MyClass();
/* passing context to MyClass*/
    myClass.getMoneyFromRtrofit(getApplicationContext);
}
}

最佳答案

如果在更新的 Activity 中完成一些工作并且结果应该在您的 MyClass fragment 中表示,您应该覆盖 MyClass fragment 中的 startActivityForResult . 然后您可以从 onActivityResult 的 Intent 中获取您期望的数据并更新提到的 TextView。 所以没有必要调用 MyClass fragment 的 getMoneyFromRtrofit 方法。在这种情况下,Updated Activity 将调用它自己的改造调用并且它不会期望 fragment 具有该方法。和 Activity 将是可重用的。

 mybtn.setOnClickListener(new OnClickListener() {  
            @Override  
            public void onClick(View arg0) {  
                Intent intent=new Intent(getActivity,Updated.class);  
                startActivityForResult(intent, 2);// Activity is started with requestCode 2  
            }  
        });  
    }  
 // Call Back method  to get the Message form other Activity  
    @Override  
       protected void onActivityResult(int requestCode, int resultCode, Intent data)  
       {  
                 super.onActivityResult(requestCode, resultCode, data);  
                  // check if the request code is same as what is passed  here it is 2  
                   if(requestCode==2)  
                         {  
                            String balance=data.getStringExtra("BALACE");   
                            moneyTv.setText(balance);  
                         }  
     } 

在第二个 Activity 中更新了名称(这不好命名)设置数据:

public String getMoneyFromRtrofit(Context context)
{
  String balance;
  RetrofitRequest retrofitReq=new RetrofitRequest(context,this/*passing money listener here*/);
   retrofitReq.getMoney();
}
@Override
    public void onSuccesfulResponse(MoneyObject money) {

     balance=money.getBalance;

    }

 return balance;
}

然后发送结果:

somebtn.setOnClickListener(new OnClickListener() {  
                @Override  
                public void onClick(View arg0) {  
                    String balance=getMoneyFromRtrofit;  
                    Intent intent=new Intent();  
                    intent.putExtra("BALANCE",balance);  
                    setResult(2,intent);  
                    finish();//finishing activity  
                }  
            });

关于java - 如何从另一个类访问 fragment 类中显示的 TextView 和进度条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58558851/

相关文章:

java - 向查询短语添加单词应在 Lucene 中过滤结果

java - JDBCTemplate 执行查询后关闭准备好的语句

Android 重命名库项目的输出

Android ffmpeg只是将图像文件转换为视频文件

java - Node.js 中的 DES 加密

java - HashMap 桶中的条目数

android - 我正在使用 Ubuntu 17.04,当我尝试安装 android studio 并运行我的虚拟设备时,它会出现这些错误

java - 最近更新后无法使用按钮打开带有 LOCK_MODE_LOCKED_CLOSED 的抽屉

支持 Pinch-Zoom 和 Scrolling 的 Android ImageViewer 类

java - Netty SystemD延迟初始化