我通过“instanceOf”调用了几个EditTexts,因为我不一定知道它们的确切名称/ ID。当我这样做以获取文本时,它工作得很好。但是当我尝试基于本地instanceOf EditText设置setText()时,它不会显示我传递它的字符串。奇怪的是,当我使用setText然后记录getText时,它会正确记录它 - 它只是不会物理显示它。
我还测试了设置View.INVISIBLE或View.GONE的可见性,看看我是否可以与它进行交互,但它没有做任何事情。
以下是设置文本然后记录的代码段:
LinearLayout mLayout = (LinearLayout) main_fields_holder.getChildAt(0);
LinearLayout mLayout2 = (LinearLayout) mLayout.getChildAt(0);
LinearLayout mLayout3 = (LinearLayout) mLayout2.getChildAt(1);
for(int i = 0; i < mLayout3.getChildCount(); i++){
View v = (View) mLayout3.getChildAt(i);
if (v instanceof EditText){
EditText e = (EditText) v;
e.setText("HELLO");
Log.v("USER TEXT", "Text is: " + e.getText().toString() + "!");
;
}
}
我还应该提一下,我使用按钮文本执行相同的instanceOf方法,它也不会显示我的setText。
是否有某些原因导致无法操纵editText(或按钮)的本地实例?
顺便说一下,行Log.v(“USER TEXT”,“Text is:”+ e.getText()。toString()+“!”);能给我“你好!”。我甚至不确定这对我的问题意味着什么。
主要布局文件是:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#fff"
xmlns:android1="http://schemas.android.com/apk/res/android">
<ScrollView android:id="@+id/scrollView1" android:layout_width="fill_parent" android:layout_height="fill_parent">
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent" android1:focusable="false">
<LinearLayout android:id="@+id/item_edit_linear"
android:layout_height="wrap_content"
android:background="@drawable/backrepeat"
android:layout_width="fill_parent"
>
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/add_item_text" android:text="Add New Item" android:textStyle="bold" android:paddingLeft="15dip" android1:paddingTop="8dip" android1:textSize="12pt" android1:textColor="@color/blue"></TextView>
</LinearLayout>
<LinearLayout android1:layout_height="wrap_content" android1:layout_width="fill_parent" android1:orientation="vertical" android1:paddingLeft="15dip" android1:background="@drawable/borderlines" android1:paddingBottom="15dip" android1:paddingTop="10dip" android1:id="@+id/spinner_holder_layout">
<TextView android1:layout_height="wrap_content" android1:layout_width="wrap_content" android1:paddingTop="5dip" android1:text="Item Name:" android1:textColor="@color/gray" android1:paddingBottom="5dip"></TextView>
<EditText android1:layout_height="wrap_content" android1:layout_width="290dip" android1:id="@+id/edit_item_title">
<requestFocus></requestFocus>
</EditText>
<TextView android1:layout_height="wrap_content" android1:layout_width="wrap_content" android1:paddingTop="5dip" android1:id="@+id/textView9" android1:text="Select Category:" android1:textColor="@color/gray" android1:paddingBottom="5dip"></TextView>
<Spinner android1:layout_height="wrap_content" android1:layout_width="wrap_content" android1:prompt="@string/edit_item_category_spinner_text" android1:id="@+id/edit_item_category_spinner" android1:entries="@array/categoryList" android1:paddingBottom="10dip"></Spinner>
<LinearLayout android1:layout_height="wrap_content" android1:layout_width="fill_parent" android1:orientation="vertical" android1:id="@+id/item_spinner_layout" android1:visibility="gone">
<TextView android1:layout_height="wrap_content" android1:layout_width="wrap_content" android1:paddingTop="5dip" android1:id="@+id/textView10" android1:text="Select Item" android1:textColor="@color/gray" android1:paddingBottom="5dip"></TextView>
<Spinner android1:layout_height="wrap_content" android1:layout_width="wrap_content" android1:prompt="@string/edit_item_item_spinner_text" android1:paddingBottom="10dip" android1:id="@+id/edit_item_spinner"></Spinner>
</LinearLayout>
</LinearLayout>
<LinearLayout android1:layout_height="wrap_content" android1:layout_width="fill_parent" android1:orientation="vertical" android1:id="@+id/editItemFields">
</LinearLayout>
<LinearLayout android1:layout_marginLeft="15dip" android1:layout_width="fill_parent" android1:layout_height="wrap_content" android1:id="@+id/date_time_container" android1:visibility="gone">
<LinearLayout android1:layout_width="wrap_content" android1:layout_height="fill_parent" android1:id="@+id/linearLayout7" android1:orientation="vertical">
<TextView android1:layout_width="fill_parent" android1:id="@+id/dep_date_text" android1:textColor="@color/gray" android1:layout_marginBottom="10dip" android1:text="Departure Date:" android1:gravity="right|center" android1:layout_height="36dip"></TextView>
<TextView android1:layout_width="fill_parent" android1:id="@+id/dep_time_text" android1:textColor="@color/gray" android1:layout_marginBottom="9dip" android1:text="Depature Time:" android1:gravity="right|center" android1:layout_height="36dip"></TextView>
<TextView android1:layout_width="fill_parent" android1:id="@+id/arr_date_text" android1:textColor="@color/gray" android1:layout_marginBottom="9dip" android1:text="Arrival Date:" android1:gravity="right|center" android1:layout_height="36dip"></TextView>
<TextView android1:layout_width="fill_parent" android1:id="@+id/arr_time_text" android1:textColor="@color/gray" android1:layout_marginBottom="9dip" android1:text="Arrival Time:" android1:gravity="right|center" android1:layout_height="36dip"></TextView>
</LinearLayout>
<LinearLayout android1:layout_marginLeft="5dip" android1:layout_width="wrap_content" android1:layout_height="fill_parent" android1:id="@+id/linearLayout8" android1:orientation="vertical">
<Button android1:layout_width="wrap_content" android1:layout_height="45dip" android1:id="@+id/departure_date" android1:minWidth="125dip" android1:text="Button"></Button>
<Button android1:layout_width="wrap_content" android1:layout_height="45dip" android1:id="@+id/departure_time" android1:minWidth="125dip" android1:text="Button"></Button>
<Button android1:layout_width="wrap_content" android1:layout_height="45dip" android1:id="@+id/arrival_date" android1:minWidth="125dip" android1:text="Button"></Button>
<Button android1:layout_width="wrap_content" android1:layout_height="45dip" android1:id="@+id/arrival_time" android1:minWidth="125dip" android1:text="Button"></Button>
</LinearLayout>
</LinearLayout>
<LinearLayout android:layout_width="fill_parent" android:id="@+id/editItemLinearLayout"
android:layout_height="fill_parent" android:orientation="vertical" android1:paddingLeft="15dip" android1:visibility="gone">
<TextView android:text="Cost" android:id="@+id/textView1"
android:layout_width="wrap_content" android:layout_height="wrap_content">
</TextView>
<EditText android:layout_height="wrap_content"
android:layout_width="fill_parent" android:id="@+id/edit_item_cost">
</EditText>
<TextView android:text="Contact Phone" android:id="@+id/textView2"
android:layout_width="wrap_content" android:layout_height="wrap_content">
</TextView>
<EditText android:layout_height="wrap_content"
android:layout_width="fill_parent" android:id="@+id/edit_item_phone">
</EditText>
<TextView android:text="Carrier" android:id="@+id/textView3"
android:layout_width="wrap_content" android:layout_height="wrap_content">
</TextView>
<EditText android:layout_height="wrap_content"
android:layout_width="fill_parent" android:id="@+id/edit_item_carrier">
</EditText>
<TextView android:text="Names" android:id="@+id/textView4" android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
<EditText android:layout_height="wrap_content" android:layout_width="fill_parent" android:id="@+id/edit_item_names">
</EditText>
<TextView android:text="Departure Location" android:id="@+id/textView5"
android:layout_width="wrap_content" android:layout_height="wrap_content">
</TextView>
<EditText android:layout_height="wrap_content"
android:layout_width="fill_parent" android:id="@+id/edit_item_departure_location">
</EditText>
<TextView android:text="Arrival Location" android:id="@+id/textView6"
android:layout_width="wrap_content" android:layout_height="wrap_content">
</TextView>
<EditText android:layout_height="wrap_content"
android:layout_width="fill_parent" android:id="@+id/edit_item_arrival_location">
</EditText>
<TextView android:id="@+id/textView7" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="Date"></TextView>
<Button android:text="Button" android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/edit_item_reminder_date"></Button>
<TextView android:id="@+id/textView8" android:layout_height="wrap_content" android:layout_width="wrap_content" android:text="Time"></TextView>
<Button android:text="Button" android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/edit_item_reminder_time"></Button>
</LinearLayout>
<RelativeLayout android1:layout_width="fill_parent" android1:layout_marginTop="50dip"
android1:id="@+id/relativeLayout1" android1:layout_height="fill_parent">
<Button android1:id="@+id/edit_item_confirm" android1:layout_width="wrap_content" android1:layout_height="wrap_content" android1:background="@drawable/savebutton" android1:layout_alignParentBottom="true"></Button>
<Button android1:width="159dip" android1:background="@drawable/cancelbutton" android1:layout_width="wrap_content" android1:id="@+id/item_creation_cancel" android1:layout_height="wrap_content" android1:layout_alignParentRight="true" android1:layout_alignParentBottom="true"></Button>
</RelativeLayout>
</LinearLayout>
</ScrollView>
</LinearLayout>
通过代码,我使用以下内容来扩充editItemFields布局:
<LinearLayout android1:paddingLeft="15dip" android1:layout_width="fill_parent"
android1:background="@color/white" android1:id="@+id/flight_edit_container"
android1:orientation="vertical" android1:layout_height="fill_parent"
xmlns:android1="http://schemas.android.com/apk/res/android" android1:paddingTop="10dip">
<LinearLayout android1:layout_height="wrap_content" android1:layout_width="fill_parent" android1:id="@+id/linearLayout6">
<LinearLayout android1:layout_height="fill_parent" android1:layout_width="wrap_content" android1:id="@+id/linearLayout7" android1:orientation="vertical">
<TextView android1:id="@+id/TextView02" android1:textColor="@color/gray" android1:layout_width="fill_parent" android1:gravity="right|center" android1:layout_height="36dip" android1:layout_marginBottom="10dip" android1:text="Airline:"></TextView>
<TextView android1:text="Flight #:" android1:id="@+id/TextView05" android1:textColor="@color/gray" android1:layout_width="fill_parent" android1:gravity="right|center" android1:layout_height="36dip" android1:layout_marginBottom="10dip"></TextView>
<TextView android1:text="Gate:" android1:id="@+id/TextView04" android1:textColor="@color/gray" android1:gravity="right|center" android1:layout_width="100dip" android1:layout_height="36dip" android1:layout_marginBottom="10dip"></TextView>
<TextView android1:id="@+id/TextView09" android1:textColor="@color/gray" android1:layout_width="fill_parent" android1:gravity="right|center" android1:text="Departure Location:" android1:layout_height="36dip" android1:layout_marginBottom="10dip"></TextView>
<TextView android1:text="Departure Airport:" android1:id="@+id/TextView14" android1:textColor="@color/gray" android1:layout_width="fill_parent" android1:gravity="right|center" android1:layout_height="36dip" android1:layout_marginBottom="10dip"></TextView>
<TextView android1:text="Confirmation #:" android1:id="@+id/TextView12" android1:textColor="@color/gray" android1:layout_width="fill_parent" android1:gravity="right|center" android1:layout_height="36dip" android1:layout_marginBottom="9dip"></TextView>
<TextView android1:gravity="right|center" android1:text="Destination:" android1:id="@+id/TextView08" android1:textColor="@color/gray" android1:layout_width="fill_parent" android1:layout_height="36dip" android1:layout_marginBottom="9dip"></TextView>
<TextView android1:text="Arrival Airport:" android1:id="@+id/TextView15" android1:textColor="@color/gray" android1:layout_width="fill_parent" android1:gravity="right|center" android1:layout_height="36dip" android1:layout_marginBottom="9dip"></TextView>
<TextView android1:text="Cost:" android1:id="@+id/TextView09" android1:textColor="@color/gray" android1:layout_width="fill_parent" android1:gravity="right|center" android1:layout_height="36dip" android1:layout_marginBottom="9dip"></TextView>
<TextView android1:text="Class:" android1:id="@+id/TextView08" android1:textColor="@color/gray" android1:layout_width="fill_parent" android1:gravity="right|center" android1:layout_height="36dip" android1:layout_marginBottom="9dip"></TextView>
<TextView android1:text="Seat:" android1:id="@+id/TextView11" android1:textColor="@color/gray" android1:layout_width="fill_parent" android1:gravity="right|center" android1:layout_height="36dip" android1:layout_marginBottom="9dip"></TextView>
<TextView android1:text="Travelers:" android1:id="@+id/TextView12" android1:textColor="@color/gray" android1:layout_width="fill_parent" android1:gravity="right|center" android1:layout_height="36dip" android1:layout_marginBottom="9dip"></TextView>
<TextView android1:text="Memo:" android1:id="@+id/TextView13" android1:textColor="@color/gray" android1:layout_width="fill_parent" android1:gravity="right|center" android1:layout_height="36dip" android1:layout_marginBottom="9dip"></TextView>
</LinearLayout>
<LinearLayout android1:layout_height="fill_parent" android1:layout_width="wrap_content" android1:id="@+id/linearLayout8" android1:orientation="vertical" android1:layout_marginLeft="5dip">
<EditText android1:layout_width="190dip" android1:layout_height="45dip" android1:id="@+id/flight_airline"></EditText>
<EditText android1:layout_width="190dip" android1:id="@+id/flight_number" android1:layout_height="45dip"></EditText>
<EditText android1:layout_width="190dip" android1:id="@+id/flight_gate" android1:layout_height="45dip"></EditText>
<EditText android1:layout_width="190dip" android1:id="@+id/flight_deplocation" android1:layout_height="45dip"></EditText>
<EditText android1:layout_width="190dip" android1:id="@+id/flight_depairport" android1:layout_height="45dip"></EditText>
<EditText android1:layout_width="190dip" android1:id="@+id/flight_confirmation" android1:layout_height="45dip"></EditText>
<EditText android1:layout_height="45dip" android1:layout_width="190dip" android1:id="@+id/flight_destination"></EditText>
<EditText android1:layout_height="45dip" android1:layout_width="190dip" android1:id="@+id/flight_arrairport">
</EditText>
<EditText android1:layout_width="190dip" android1:layout_height="45dip" android1:id="@+id/flight_cost"></EditText>
<EditText android1:layout_width="190dip" android1:layout_height="45dip" android1:id="@+id/flight_class"></EditText>
<EditText android1:layout_width="190dip" android1:layout_height="45dip" android1:id="@+id/flight_seat"></EditText>
<Button android1:text="Button" android1:minWidth="125dip" android1:id="@+id/flight_travelers" android1:layout_width="wrap_content" android1:layout_height="45dip"></Button>
<EditText android1:layout_width="190dip" android1:id="@+id/flight_memo" android1:layout_height="45dip"></EditText>
</LinearLayout>
</LinearLayout>
</LinearLayout>
我基本上深入了解布局,直到我处于保存editTexts的线性布局。
最后,这是填充布局的代码片段:
main_fields_holder = (LinearLayout) findViewById(R.id.editItemFields);
view = LayoutInflater.from(getBaseContext()).inflate(R.layout.flight_fields,
null);
main_fields_holder.addView(view);
更新: 只是为了测试,我添加了这一行,看看我是否可以通过id:
来硬引用它EditText a = ((EditText)findViewById(R.id.flight_airline));
a.setText("HELLO");
它仍然不会出现。我膨胀持有这些物品的布局是否可以与它有关?基本上,当选择一个微调项目时,布局会膨胀,我尝试设置该布局中项目的文本,但无济于事。顺便说一句,我还可以在设置之后追踪EditText的值,但是bug实际上不会出现。
答案 0 :(得分:3)
仅供参考我明白这一点。无论出于何种原因,应用程序需要花一点时间来浏览所有获取信息并设置它们的函数,所以我添加了一个帖子处理程序:
handler.postDelayed(new Runnable(){ public void run(){ populateFields(项目); } },500);
这1/2秒等待允许信息正确显示。谢谢大家的答案
答案 1 :(得分:3)
使用Views
检索findViewById()
时似乎存在非常微妙但重要的差异。
如果您“本地”致电findViewById(R.id.yourEditText)
,例如在onResume()
方法的顶级行中,EditText
似乎行为正常,setText(...)
在显示中显示新值。
但是如果你把Activity放到另一个Object的成员变量中(例如某个POJO),你就这样做了:
editText = pojo.getActivity().findViewById(R.id.EditText);
你仍然会找到一个无法区分的EditText-Object,但setText()
不再起作用。我不知道为什么。
我花了很多时间才找到这个(API Level 7-Project)。 Huuuh !!!
(Oooops - 忘了它。我没有POJO,但有些错误的Map-caching给了我一个旧的Activity-Object)
答案 2 :(得分:1)
这听起来很像你没有得到你认为自己的EditText
。如果你提供更多细节,也许我们可以帮你找到合适的。
<强>更新强>
所以看来你做实际上知道ID,问题是它们并不是唯一的。解决方案是从视图层次结构中的已知点开始,您知道它们是唯一的。例如,在展开editItemFields
布局后,您可以在view
变量中引用该视图层次结构的根。然后你可以做类似的事情:
EditText flightNumberEditText = (EditText) view.findViewById(R.id.flight_number);
您将获得该特定项目的flight_number
EditText
。
答案 3 :(得分:1)
尝试做:
final EditText a = ((EditText)findViewById(R.id.flight_airline));
a.post(new Runnable() {
@Override
public void run() {
a.setText("HELLO");
}
});
这是一个比目前标记为接受的解决方案更好的解决方案。 这将在实际准备就绪时将其发布到用户界面,而不是等待1/2秒。
答案 4 :(得分:0)
当您创建EditText时,应该能够使用它来设置EditText的ID。
e.setId(15); //15 is any positive integer
相反,你可以尝试
e.getEditableText();
答案 5 :(得分:0)
试
((EditText) v).setText("HELLO");