如何获取textView的名称?

时间:2014-02-05 13:48:39

标签: android textbox textview

我有以下情况: 我有一个活动(A)调用一个新的活动(B)窗口。所以在活动(B)中我有5个文本字段(文本框)及其名称(5个TextViews),用户必须填写。我想返回上一个活动(A),其中包含填充了textBoxes的名称的字符串(不是文本框中放置的值只是名称)。现在我的问题是如何做到这一点?我知道,对于从活动(B)到活动(A)的数据传递,我必须使用:

  Intent resultIntent = new Intent();
  // TODO Add extras or a data URI to this intent as appropriate.
  setResult(Activity.RESULT_OK, resultIntent);
  finish();

并使用以下命令检索活动(A)中的数据:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch(requestCode) {
case (MY_CHILD_ACTIVITY) : {
  if (resultCode == Activity.RESULT_OK) {
    // TODO Extract the data returned from the child Activity.
  }
  break;
 } 
 }
}

但是我不知道要传递wjat,因为文本框前面的名字没有连接到textBox,所以我怎么知道哪个文本框已被填充以及我应该传回哪个名字?

2 个答案:

答案 0 :(得分:0)

你不能说哪个文本域(名称)

的哪个编辑框通讯员

你必须自己记住这一点:
如果我有这样的事情:

----------------------------
| Firstname |    | [EditBox] |
----------------------------
| Lastname  |    | [EditBox] |
----------------------------

如果第一个框名为box1,第二个框box2,则 我怎么知道box1是名字而box2是姓? 现在。

因为你设计了布局,你也知道box1名字

因此,如果用户填写了他的姓名,或者即使他没有填写任何内容,然后又回到Activity A, 您可以将编辑框文本作为附加内容从B添加到A.并且因为您知道editbox1对应的内容,您可以使用您知道的密钥将其传回:

Intent i = new Intent();
i.putExtra("firstname", firstname.getText().toString());
i.putExtra("lastname", lastname.getText().toString());
setResult(Activity.RESULT_OK, i);
finish();

并且在活动结果中获取您刚设置的值,使用:

String first = intent.getExtras().getString("firstname", null);

和姓氏一样

答案 1 :(得分:0)

您可以通过以下方式获取View的名称:

Resources#getResourceName(int)Resources#getResourcesEntryName(int)

getResources().getResourceName(theView.getId()); getResources().getResourceEntryName(theView.getId()));

您可能还想考虑使用setHint(CharSequence)标记EditText而不是使用TextView

或者,您可以将TextViewEditText分组到布局中:

<LinearLayout android:id="@+id/the_first_name_group">
   <TextView android:text="The first name" />
   <EditView android:id=@+id/the_first_name_value />
</LinearLayout>

并添加以下代码:

ViewGroup parent = (ViewGroup) theFirstNameValue.getParent();
getResources().getResourceEntryName(parent.getId()); 

将返回the_first_name_group