Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从另一个类访问片段类中显示的文本视图和进度条_Java_Android - Fatal编程技术网

Java 如何从另一个类访问片段类中显示的文本视图和进度条

Java 如何从另一个类访问片段类中显示的文本视图和进度条,java,android,Java,Android,我正在从另一个类调用片段中的方法。在该方法调用之后,我想更改一些文本视图和进度条可见性。但我不能做到这一点。我不知道如何从另一个类访问片段类。因为我正在从另一个类调用片段类中的方法,所以不会调用oncreateview。请任何人帮我解决这个问题 这是我的片段类 public class MyClass extends androidx.fragment.app.Fragment implements MoneyListener{ private TextView moneyTv; priva

我正在从另一个类调用片段中的方法。在该方法调用之后,我想更改一些文本视图和进度条可见性。但我不能做到这一点。我不知道如何从另一个类访问片段类。因为我正在从另一个类调用片段类中的方法,所以不会调用oncreateview。请任何人帮我解决这个问题

这是我的片段类

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

如果更新后的活动和结果中的某些工作应在
MyClass
片段中表示,则应覆盖
MyClass
片段中的
startActivityForResult
。 然后,您可以从ActivityResult的intent中获取所需的数据,并更新所提到的TextView。 因此,不需要调用
MyClass
片段的getMoneyFromRtrofit方法。在这种情况下,
更新的活动将调用它自己的改装调用,并且它不排除片段具有该方法。活动将是可重用的

 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);  
                         }  
     } 
在更新名称的第二个活动中(命名不好)设置数据:

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

发布一些代码来理解这个问题。我已经添加了代码。请查看that@ZahraYou应该将改装代码移动到不是片段实例的单独类检查此链接关于onActivityResult:谢谢我找到了解决方案..在片段中重写start()时,我调用改装请求。所以我的成本被更新了。