Java 如何从其他布局获取text()
如何从other.xml中Java 如何从其他布局获取text(),java,android,fragment,Java,Android,Fragment,如何从other.xml中getText()AutoCompleteTextView? 我已经尝试了以下代码: //getFragmentOrder LayoutInflater inflater = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); FormDataOrder = inflater.inflate(R.layout.formdata_order_
getText()
AutoCompleteTextView
?
我已经尝试了以下代码:
//getFragmentOrder
LayoutInflater inflater = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
FormDataOrder = inflater.inflate(R.layout.formdata_order_content_main, null);
ti_namapic = (AutoCompleteTextView) FormDataOrder.findViewById(R.id.ti_namapic);
String a = ti_namapic.getText().toString();
System.out.println("Value --> "+ a);
如果我在.xml(android:text=“MyText”)中手动设置,
我得到了那个文本,但如果我从设备屏幕输入,我就得不到那个值
编辑:这是我的全部代码
public class FormDataObject extends Fragment {
AutoCompleteTextView ti_desc;
AutoCompleteTextView ti_group;
View v;
Button btn_ok;
/*--------------------------------------*/
View FormDataOrder;
AutoCompleteTextView ti_namapic;
/* =========================================================================================== */
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState)
{
v = inflater.inflate(R.layout.formdata_object_content_main,container,false);
addButtonListener();
return v;
}
/* =========================================================================================== */
public void addButtonListener()
{
ti_desc = (AutoCompleteTextView) v.findViewById(R.id.ti_desc);
ti_group = (AutoCompleteTextView) v.findViewById(R.id.ti_group);
btn_ok = (Button) v.findViewById(R.id.btn_ok);
btn_ok.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getValueFromFragmentOrder();
System.out.println("ti_desc ----> " + ti_desc.getText());
System.out.println("ti_group ----> " + ti_group.getText());
}
});
}
/* =========================================================================================== */
public void getValueFromFragmentOrder()
{
System.out.println("getComponentFromOthersFragment ----------> RUN");
//getFragmentOrder
LayoutInflater inflater = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
FormDataOrder = inflater.inflate(R.layout.formdata_order_content_main, null);
ti_namapic = (AutoCompleteTextView) FormDataOrder.findViewById(R.id.ti_namapic);
String a = ti_namapic.getText().toString();
System.out.println("Value ----------> "+ a);
}
}
“getValueFromFragmentOrder();”无效,值a-->返回null/empty您正在扩大布局,但没有在任何地方添加该视图。
首先添加视图,然后获取值。它会起作用。您正在扩大布局,但没有在任何地方添加该视图。
首先添加视图,然后获取值。它会起作用。实际上,您需要做的是在
btn_ok
事件中或您需要时,在onClick
上获取文本。现在要做的是在调用findviewbyd
方法后立即检索该值
这里发生了什么事?
您将只获得在EditText中分配的初始值,并将其存储到变量中,但在用户输入文本后不会存储该值
那你需要做什么?
--修改此项
btn_ok.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getValueFromFragmentOrder();
String a = ti_namapic.getText().toString();
System.out.println("a----> " + a);
}
});
实际上,您需要做的是在
btn_ok
的onClick
事件上或您需要时获取文本。现在要做的是在调用findviewbyd
方法后立即检索该值
这里发生了什么事?
您将只获得在EditText中分配的初始值,并将其存储到变量中,但在用户输入文本后不会存储该值
那你需要做什么?
--修改此项
btn_ok.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getValueFromFragmentOrder();
String a = ti_namapic.getText().toString();
System.out.println("a----> " + a);
}
});
试试这个
View mOrderContent;
.....
public void getValueFromFragmentOrder()
{
System.out.println("getComponentFromOthersFragment ----------> RUN");
//getFragmentOrder
LayoutInflater inflater = getActivity().getLayoutInflater();
LinearLayout viewGroup = new LinearLayout(getActivity());
mOrderContent = inflater.inflate(R.layout.formdata_order_content_main, viewGroup);
AutoCompleteTextView ti_namapic = (AutoCompleteTextView) mOrderContent.findViewById(R.id.ti_namapic);
String a = ti_namapic.getText().toString();
System.out.println("Value ----------> " + a);
}
试试这个
View mOrderContent;
.....
public void getValueFromFragmentOrder()
{
System.out.println("getComponentFromOthersFragment ----------> RUN");
//getFragmentOrder
LayoutInflater inflater = getActivity().getLayoutInflater();
LinearLayout viewGroup = new LinearLayout(getActivity());
mOrderContent = inflater.inflate(R.layout.formdata_order_content_main, viewGroup);
AutoCompleteTextView ti_namapic = (AutoCompleteTextView) mOrderContent.findViewById(R.id.ti_namapic);
String a = ti_namapic.getText().toString();
System.out.println("Value ----------> " + a);
}
但是如果我从设备屏幕键入/输入,我没有得到该值
哪个操作想要从设备屏幕获取类型/输入的文本?您没有在任何地方添加FormDataOrder
。您在屏幕上看到的并不是FormDataOrder
指向类formdata\u order中的@ρ∑ρK文本的内容,我希望在类formdata\u对象中获取该文本。我认为问题在于您有两个R.id.ti\u namapic
视图的实例。一个正在显示和编辑,另一个未显示,其文本保持不变。您需要获取对正在显示的视图的引用,而不是创建另一个视图。@TommyAndroid您解决了这个问题吗?或者仍然存在一些问题。但是如果我从设备屏幕键入/输入,我无法获取该值
哪个操作想要从设备屏幕获取类型/输入的文本?您没有在任何地方添加FormDataOrder
。您在屏幕上看到的并不是FormDataOrder
指向类formdata\u order中的@ρ∑ρK文本的内容,我希望在类formdata\u对象中获取该文本。我认为问题在于您有两个R.id.ti\u namapic
视图的实例。一个正在显示和编辑,另一个未显示,其文本保持不变。您需要获取对正在显示的视图的引用,而不是创建另一个视图。@TommyAndroid您解决了这个问题吗?还是有些问题没解决谢谢。。当我在layout.xml>>android:text=“Test”中手动设置时,它就起作用了。但是如果我从设备屏幕输入,我没有得到值..是的。你说得对。如果您希望在运行时获取值,则应要求用户在获取值之前通过对话框在AutoCompleteTextView中输入值。谢谢。。当我在layout.xml>>android:text=“Test”中手动设置时,它就起作用了。但是如果我从设备屏幕输入,我没有得到值..是的。你说得对。如果希望在运行时获取值,则应要求用户在获取值之前通过对话框在AutoCompleteTextView中输入值。