代码之家  ›  专栏  ›  技术社区  ›  John Joe Mayank Nema

单击搜索窗口小部件时打算进行下一个活动

  •  2
  • John Joe Mayank Nema  · 技术社区  · 10 年前

    有人能告诉我如何做到这一点吗?

    我想添加搜索 widget 在我的应用程序栏中。单击时,它将指向B并允许用户键入。相关结果将显示在下面。

    我尝试了很多方法,但当我点击搜索时 小装置 ,更改为 editText ,但仍保留在同一页中。我怎么能做到 intent 更改为时转到另一个活动 编辑文本 ? 谢谢

    活动A

      @Override
            public boolean onCreateOptionsMenu(Menu menu) {
                MenuInflater inflater = getMenuInflater();
                inflater.inflate(R.menu.create_menu, menu);
                // Associate searchable configuration with the SearchView
                SearchManager searchManager =
                        (SearchManager) getSystemService(Context.SEARCH_SERVICE);
                SearchView searchView =
                        (SearchView) menu.findItem(R.id.action_search).getActionView();
                searchView.setSearchableInfo(
                        searchManager.getSearchableInfo(getComponentName()));
                return true;
            }
    
    @Override
        public boolean onOptionsItemSelected(MenuItem item) {
    
            switch (item.getItemId()) {
    
                case R.id.action_search:
                    Intent intent=new Intent(A.this, B.class);
                    startActivity(intent);
                    return true;
    

    活动B

      public class SearchResultActivity extends ActionBarActivity {
    
    
            TextView text;
    
            @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_result);
                text=(TextView)findViewById(R.id.textView1);
                handleIntent(getIntent());
            }
    
    
     @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            MenuInflater inflater = getMenuInflater();
            inflater.inflate(R.menu.create_menu, menu);
            SearchManager searchManager =
                    (SearchManager) getSystemService(Context.SEARCH_SERVICE);
            SearchView searchView =
                    (SearchView) menu.findItem(R.id.action_search).getActionView();
            searchView.setSearchableInfo(
                    searchManager.getSearchableInfo(getComponentName()));
    
            return true;
        }
    
    
    
    
            @Override
            protected void onNewIntent(Intent intent) {
                setIntent(intent);
                handleIntent(intent);
            }
    
            private void handleIntent(Intent intent) {
    
                if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
                    String query = intent.getStringExtra(SearchManager.QUERY);
                    text.setText(query);
                    //use the query to search
                }
            }
        }
    

    这是我想要实现的。

    活动A

    enter image description here

    单击搜索图标后,在活动B中更改为editText,并在应用程序栏下方显示相关结果。

    活动B

    enter image description here

    1 回复  |  直到 10 年前
        1
  •  4
  •   Harin    10 年前

    请遵循以下步骤:

    第一个.xml

    <menu xmlns:android="http://schemas.android.com/apk/res/android">
    
    <item android:id="@+id/m1"
        android:title="Search"
        android:showAsAction="always"
        android:icon="@android:drawable/ic_menu_search"/>
    

    主活动第一个.java

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.first,menu);
        return super.onCreateOptionsMenu(menu);
    }
    
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        if(item.getItemId()==R.id.m1){
            Intent i = new Intent(this,MainActivitySecond.class);
            startActivity(i);
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
    

    秒.xml

    <menu xmlns:android="http://schemas.android.com/apk/res/android">
    
    <item
        android:id="@+id/search"
        android:icon="@android:drawable/ic_menu_search"
        android:title="Search"
        android:showAsAction="always"
        android:actionViewClass="android.widget.SearchView"/>
    

    主活动秒.java

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.second, menu);
        SearchView searchView =
        (SearchView) menu.findItem(R.id.search).getActionView();
            searchView.setIconified(false);
            return super.onCreateOptionsMenu(menu);
        }
    

    searchView.setIconified(假) 将显示在第二个活动中展开的搜索视图,在这里您可以使用搜索视图、建议等。 更多信息请关注 Creating search interface in android

    希望它能解决你的问题。

    推荐文章