0

我正在使用ActionBarSherlock,在ActionBar中我有這個自定義佈局,當我點擊searchIcon時出現。點擊EditText不顯示軟鍵盤

public boolean onCreateOptionsMenu(final Menu menu) { 
LayoutInflater inflater = getLayoutInflater(); 
final View view = inflater.inflate(R.layout.on_search_icon_clicked,null, false); 
view.findViewById(R.id.search_image).setOnClickListener(
     new View.OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 

     EditText searchET = (EditText) view.findViewById(R.id.search_editText); 
     String s = searchET.getText().toString(); 
     Toast.makeText(getBaseContext(), "Searching for: " + s,1000).show(); 
        } 
     }); 

menu.add("Search") 
     .setIcon(R.drawable.ic_search) 
     .setActionView(view) 
     .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW); 
     return true; 
} 

on_search_icon_clicked.xml

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

    <ImageView 
     android:id="@+id/search_image" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:layout_alignParentRight="true" 
     android:src="@drawable/ic_search" 
     android:clickable="true" 
     android:contentDescription="@string/seach_icon" /> 

    <EditText 
     android:id="@+id/search_editText" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_toLeftOf="@id/search_image" 
     android:hint="@string/search" 
     android:singleLine="true" /> 

</RelativeLayout> 

所以,i click on the SearchIcon --->i get the custom layout with editText and ImageView --->click on editText, opens softkeyboard --->enters string and clicks the imageView --->shows me the toast.

其精細到這裏。

的問題是:

close the softkeyboard using device back button --->然後close the custom layout using ActionBar Home icon click --->現在click the searchIcon again, which reopens the custom layout, with editText filled with previously searched string --->click on the editText, the softkeyboard doesn't open up(這裏的問題)。

請幫助,我不知道爲什麼它不按預期工作。

謝謝

回答

1

我以前也遇到這個問題,這裏是我的解決方案

//your_menu 
<menu xmlns:android="http://schemas.android.com/apk/res/android" > 

<item 
    android:id="@+id/menu_search" 
    android:orderInCategory="0" 
    android:icon="@drawable/btn_search" 
    android:title="Search" 
    android:actionLayout="@layout/on_search_icon_clicked" 
    android:showAsAction="always|collapseActionView" 
    /> 
</menu> 


@Override 
public boolean onCreateOptionsMenu(Menu menu) 
{  
    getSupportMenuInflater().inflate(R.menu.your_menu, menu); 
    mSearchbar = (MenuItem) menu.findItem(R.id.menu_search); 
    View actionview = mSearchbar.getActionView(); 
    mEtSearchbar = ((EditText) actionview.findViewById(R.id.search_editText)); 
    mEtSearchbar.setOnEditorActionListener(this);  
    mEtSearchbar.addTextChangedListener(this);  
    super.onCreateOptionsMenu(menu); 
    return true; 
} 



@Override 
public boolean onOptionsItemSelected(MenuItem item) 
{ 
    Intent intent; 
    switch (item.getItemId()) 
    { 
     case R.id.menu_search:     
      mEtSearchbar.clearFocus(); 
      (new Handler()).postDelayed(new Runnable() { 
       public void run() { 
        mEtSearchbar.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_DOWN, 0, 0, 0)); 
        mEtSearchbar.dispatchTouchEvent(MotionEvent.obtain(SystemClock.uptimeMillis(), SystemClock.uptimeMillis(), MotionEvent.ACTION_UP , 0, 0, 0)); 
       } 
      }, 100); 
      break;   
     default: 
      break; 
    } 

    return super.onOptionsItemSelected(item); 
} 

mEtSearchbar〜你searchET

+0

能否請您解釋一下,爲什麼我得到這個問題,正是你解決方案呢? –

+0

其實這不行,我相信。因爲,在我的例子R.id.search_image開關塊中的R.id.menu_search沒有起作用,因爲它不在菜單項中,它只會在我點擊searchIcon時出現(這是實際的菜單項)。 –

+0

否否,menu_search是您搜索菜單項的ID。 menu.add(「Search」) - >嘗試爲這個菜單項設置id。 – Wayne