gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 18:26:40 25 4
gpt4 key购买 nike

我正在从另一个类的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com