作为HeaderView的一部分的EditText失去了对输入的关注

时间:2013-06-05 13:19:20

标签: android android-edittext android-4.0-ice-cream-sandwich

这是一个我只面临>的问题。 Android 4.0设备。

目前我有一个listView和一个自定义标题,我添加了ListActivity的onCreate()。

我在应用中使用editText作为自定义搜索栏。

以下是一段代码片段,希望能够解释我的实现。

private ListView    lst_Reports = null;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.showreportlist);

    lst_Reports = (ListView) findViewById(R.id.VuoShowReportsActivity_Lst_Reports);

    /*
     * Initialize UI
     */

    LinearLayout headerView = (LinearLayout) View.inflate(this, R.layout.report_list_header, null);
    EditText reportSearchBar = (EditText) headerView.findViewById(R.id.reportSearchBar);
    lst_Reports.addHeaderView(headerView);

    reportSearchBar.addTextChangedListener(new TextWatcher() {

        public void afterTextChanged(Editable s) {

        }

        public void beforeTextChanged(CharSequence s, int start, int count, int after) {

        }

        public void onTextChanged(CharSequence s, int start, int before, int count) {

            // do a search as and when the user inputs text

            if (s != null && s.length() > 0) {

                String query = s.toString();
                List queriedReports = getReportsBasedOnQueryString(query);

             // populate the listView with the queriedReports

            }

        }

    });

}

protected List getReportsBasedOnQueryString(String query) {
    // TODO Auto-generated method stub
    return null;
}

在Android 2.3.5设备上执行此代码时,我可以在editText中正常输入。然而,当同样的代码部署在具有Ice cream三明治的Galaxy S3上时,我只能在editText中一次输入一个字符,因为它在每次键输入后都会失去焦点。

我已经尝试过以下针对类似问题提出的解决方案。他们都没有解决这个问题。

  • 到AndroidManifest中的活动:

    • 机器人:windowSoftInputMode = “stateHidden”
    • 机器人:windowSoftInputMode = “adjustPan”
  • 在活动的布局xml中:

    • 机器人:descendantFocusability = “beforeDescendants”

我感谢您对此有任何帮助/反馈,并且我也很想知道是否有其他人报告了同样的问题。

由于 拉雅

1 个答案:

答案 0 :(得分:0)

public void onTextChanged(CharSequence s, int start, int before, int count) {

        // do a search as and when the user inputs text

        if (s != null && s.length() > 0) {

            String query = s.toString();
            List queriedReports = getReportsBasedOnQueryString(query);

         // populate the listView with the queriedReports

        }
         // add below line in your code
         reportSearchBar.requestFocus();


    }