【问题标题】:Android EditText field works fine on emulator, but not deviceAndroid EditText 字段在模拟器上运行良好,但在设备上运行良好
【发布时间】:2015-01-05 09:24:34
【问题描述】:

我遇到了一个奇怪的问题。我所做的是使用 TextViews 和 EditText 字段制作自定义 ListView 适配器。当我按下按钮时,应用程序会获取 EditText 字段值并将它们保存到设备的 SD 卡中。

我的应用在模拟器上运行良好,但问题是当我在设备上测试时,EditText 字段不断取消选择。也就是说,我点击 EditText 字段,键盘和光标会弹出,但光标会立即消失,无法输入任何文本。

我的自定义适配器代码:

@Override
public View getView(int i, View view, ViewGroup viewGroup)
{
    if (view == null)
    {
        LayoutInflater inflater = LayoutInflater.from(viewGroup.getContext());
        view = inflater.inflate(R.layout.list_item_task_detail, viewGroup, false);
    }

    final TaskDetailModel taskDetailModel = listArray.get(i);

    TextView textView = (TextView)view.findViewById(R.id.list_item_task_detail_text_view);
    textView.setText(taskDetailModel.getTaskName());

    EditText editText = (EditText)view.findViewById(R.id.list_item_task_detail_edit_text);

    return view;
}

EditText 布局条目:

<EditText
    android:id="@+id/list_item_task_detail_edit_text"
    android:layout_height="wrap_content"
    android:layout_width="match_parent"/>

是否需要将某种可编辑 = true 添加到 EditText 字段?我觉得我在我似乎找不到的地方犯了一个错误。我也只是不明白为什么该应用程序可以在模拟器上运行,而不是在我的真实手机上运行。

顺便说一句,模拟器和我的手机使用相同的 SDK 版本,API 级别 19 (4.4.x)

【问题讨论】:

    标签: android listview android-emulator android-edittext


    【解决方案1】:

    我想我设法解决了自己的问题...

    我需要做的就是添加一行

    editText.requestFocus()
    

    到我的适配器。

    我猜如果 requestFocus() 出于某种奇怪的原因未设置,按钮的单击侦听器会覆盖 EditText 字段的焦点请求。仍然不知道为什么这在模拟器上不是问题

    【讨论】:

      最近更新 更多