Java 从类外部访问片段布局中的视图
我正在尝试从外部类访问Java 从类外部访问片段布局中的视图,java,android,android-fragments,Java,Android,Android Fragments,我正在尝试从外部类访问TextView。TextView是由片段膨胀的布局的一部分。我如何做到这一点?我不能引用这个片段,因为我还有3个不同布局的片段 编辑: 我有一个片段,我想在其中访问totalTxt: public class FragmentCart extends Fragment { private TextView totalTxt; private ListView itemList; public View onCreateView(LayoutInf
TextView
。TextView
是由片段膨胀的布局的一部分。我如何做到这一点?我不能引用这个片段,因为我还有3个不同布局的片段
编辑:
我有一个片段,我想在其中访问totalTxt:
public class FragmentCart extends Fragment {
private TextView totalTxt;
private ListView itemList;
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_cart, container, false);
itemList = (ListView)view.findViewById(R.id.itemList);
itemList.setAdapter(MainActivity.cart);
return view;
}
我有这门课
public class someClass extends BaseAdapter {
//everytime the data here is changed, I would like to update
the value of the totalTxt above from this class
}
试试这个:
1.使用Java接口
public interface MyListener {
// you can define any parameter as per your requirement
public void callback(View view, String result);
}
2.在您的fragment类中:
public class MyActivity extends fragment implements MyListener {
@override
public void onCreate(){
MyButton m = new MyButton(this);
}
// method is invoked when MyButton is clicked
@override
public void callback(View view, String result) {
// do your stuff here
}
}
3.在适配器类中:
public class someClass extends BaseAdapter implements MyListener {
//everytime the data here is changed, I would like to update
the value of the totalTxt above from this class
}
这里是2和3,或者可选的,您可以在其中共享数据,可以是fragment,也可以是baseAdapter。这是您的选择。我给出了这两个示例。当值更新时,让我们通过接口进行尝试
让我知道这行不行 通过提供一个简单的回调
为此,请在适配器中编写一个简单的接口
public interface OnDataChangeListener{
public void onDataChanged(String value);
}
并为侦听器添加一个setter(也在适配器中)
现在向baseadapter中的以下块添加其他代码
private void conditionOfValuechanged() {
...
if(mOnDataChangeListener != null){
mOnDataChangeListener.onDataChanged(data.size());
}
}
在活动中,您需要注册侦听器
protected void onCreate(Bundle savedInstanceState) {
...
adapter.setOnDataChangeListener(new Sold_item_adaptor.OnDataChangeListener(){
public void onDataChanged(String value){
//do whatever here
txtTotal.setText(value);
}
});
}
请简要解释一下问题,或者在同一活动中发布您的代码三个片段?是的,在同一活动中发布三个片段好的,在哪里使用片段中的字符串?我的意思是使用从一个片段到另一个片段的字符串?您是否使用textview设置一些字符串格式?否。当数据更改时,我需要自动更新totalTxt。我需要访问视图totalTxt,而不是值。对不起,您把我弄丢了。我正在从适配器获取一个值,然后将该值设置为txtTotal抱歉!但是我会尽力帮助你,你能解释一下你在适配器中得到的值吗,比如说“你好”&从适配器本身,你需要访问[片段内部]的textview并设置值
protected void onCreate(Bundle savedInstanceState) {
...
adapter.setOnDataChangeListener(new Sold_item_adaptor.OnDataChangeListener(){
public void onDataChanged(String value){
//do whatever here
txtTotal.setText(value);
}
});
}