gpt4 book ai didi

android - Lollipop 中未调用 setOnEditorActionListener

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:54:01 26 4
gpt4 key购买 nike

我想创建一个布局,用户在其中键入艺术家姓名,当他在虚拟键盘上按下搜索时,会显示艺术家列表。

View rootView = (View) inflater.inflate(R.layout.fragment_search, container, false);
EditText searchArtist = (EditText) rootView.findViewById(R.id.searchArtist);
searchArtist.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_SEARCH) {
makeToast();
return true;
}
return false;
}
});

这是我的xml

<EditText
android:id="@+id/searchArtist"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="@string/search_artist"
android:imeOptions="actionSearch"
android:inputType="text">
<requestFocus />

我在其他 stackoverflow 帖子中搜索了很多关于此的内容,但似乎没有一个解决方案有效。

MinSDK 21,在 nexus 6 上测试,compileSdkVersion 22,buildToolsVersion '22.0.1'。

另请注意,searchArtist(edittext) 位于 fragment 内。

更多上下文:监听器代码在 onCreateView 方法中。

最佳答案

我在 Android 5.1.1 上测试了类似的代码。有用。我建议插入一条日志消息以检查是否正在调用 onEditorAction:

public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
Log.v("TAG", "onEditorAction(): " + actionId);
if (actionId == EditorInfo.IME_ACTION_SEARCH) {
Log.v("TAG", "onEditorAction(): entered");
...

这样,您可以确保该方法确实被调用。EditorInfo.IME_ACTION_SEARCH 为常量:3

我假设 makeToast();是您创建的方法,对吧?

为了添加更多信息,我在 fragment 中测试了您的代码。所以,我真的不相信问题出在你的代码被插入的地方。您只需要确保在需要使用它之前设置了监听器。希望对你有帮助

public class MainFragment extends Fragment {
....
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {

// view is a reference to whole fragment layout (where searchArtist is inserted)
View view = inflater.inflate(R.layout.fragment, null);

// Find searchArtist (There's only one @id/searchArtist inside View)
EditText searchArtist = (EditText)view.findViewById(R.id.searchArtist);

searchArtist.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_SEARCH) {
Log.v("TEMP", "I'm being clicked " + actionId);
return true;
}
return false;
}
});
return view;
}// End of onCreateView
} // End of Fragment

我的 xml:

<EditText android:id="@+id/searchArtist"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="@string/search_artist"
android:imeOptions="actionSearch"
android:inputType="text" />

关于android - Lollipop 中未调用 setOnEditorActionListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30608146/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com