EditText在Fragment中无法编辑

时间:2014-07-23 23:05:18

标签: android android-fragments android-fragmentactivity

我有一个包含简单EditText的片段,当我运行我的程序时,EdtiText将不是Editable但是如果在代码中编辑它就会像这样:

myEditText.setText("COCO");

当我不使用片段(在正常活动中的意思)时,EditText将是可编辑的。 所以包含EDitText的布局是:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >

    <EditText
        android:id="@+id/search_text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:ems="10"
        android:hint="@string/search" >

        <requestFocus />
    </EditText>

    <Button
        android:id="@+id/search_btn"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="15dp"
        android:layout_height="40dp"
        android:layout_weight="1"
        android:background="@drawable/search_setting" />

</LinearLayout>

<ListView
    android:id="@+id/list_eleuteurs"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >
</ListView>

它被称为search_text。 我的片段是:

public class ListElecteur extends Fragment {

private ListView listElecteurs;
private EditText search ;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    final View view = inflater.inflate(R.layout.list_electeurs_fragment,
            container, false);

    return view;
}

啊,我忘了,当我输入myEditText时,当前的Tab会把焦点放在myEditText所写的任何东西:(。

这里有一些截图来解释这个问题。 第一:

enter image description here

你在myEditText看到光标,现在如果我用键盘键入任何内容,看看有什么好处:

enter image description here

这里的EditText丢失了光标,Tab(title)因为蓝色而被选中了。

3 个答案:

答案 0 :(得分:0)

删除<requestFocus />并将0dp值放在android:layout_width中的EditText和Button

修改:

这是我的布局版本:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:orientation="vertical" >

     <LinearLayout
          android:layout_width="wrap_content"
          android:layout_height="wrap_content" >

          <EditText
               android:id="@+id/search_text"
               android:layout_width="0dp"
               android:layout_height="wrap_content"
               android:layout_weight="1"
               android:ems="10"
               android:hint="@string/search" />

          <Button
               android:id="@+id/search_btn"
               style="?android:attr/buttonStyleSmall"
               android:layout_width="15dp"
               android:layout_height="40dp"
               android:background="@drawable/search_setting" />
     </LinearLayout>

     <ListView
         android:id="@+id/list_eleuteurs"
         android:layout_width="match_parent"
         android:layout_height="0dp"
         android:layout_weight="1" />
 </LinearLayout>

试试吧! :d

答案 1 :(得分:0)

只是一个愚蠢的建议。尝试在FrameLayout下包含片段布局xml。这就是我在处理碎片时所做的事情。样品: -

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fr"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<RelativeLayout 
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" >

<TextView
    android:id="@+id/tv1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_marginTop="27dp"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:textSize="12pt"
    android:textAlignment="center"
    android:layout_marginLeft="10dp" />

<ScrollView
    android:id="@+id/scrollView1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_below="@+id/tv1" >

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >
        <TextView
            android:id="@+id/tv2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="0.31"
            android:layout_marginRight="10dp"
            android:layout_marginLeft="10dp" />
    </RelativeLayout>
</ScrollView>

</RelativeLayout>
</FrameLayout>

答案 2 :(得分:0)

转到AVD Manager,单击您的设备,然后单击编辑。看看&#34;硬件键盘是否存在&#34;复选框是否已选中。