如何保持默认情况下打开材质搜索视图

时间:2017-01-19 09:45:11

标签: java android xml

我在搜索视图中使用https://github.com/MiguelCatalan/MaterialSearchView。 我希望在进入材料研究时保持搜索视图的打开..

search view

我目前的代码是

public class search extends AppCompatActivity {
MaterialSearchView searchView;
    Toolbar toolbar;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_search);
        searchView = (MaterialSearchView)findViewById(R.id.search_view);
        toolbar = (Toolbar)findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        getSupportActionBar().setTitle("Search");
        searchView.showSearch();
    }



    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.search, menu);

        MenuItem item = menu.findItem(R.id.action_search);
        searchView.setMenuItem(item);

        return true;
    }
}

根据Nayan Srivastava的回答,将其更新为以下代码

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_search);
        searchView = (MaterialSearchView)findViewById(R.id.search_view);
        searchView.performClick();
        toolbar = (Toolbar)findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        getSupportActionBar().setTitle("Search");
        searchView.showSearch();
    }

我收到以下错误..

FATAL EXCEPTION: main
                                                                       Process: com.buckydroid.anonchat, PID: 7850
                                                                       java.lang.RuntimeException: Unable to start activity ComponentInfo{com.buckydroid.anonchat/com.buckydroid.anonchat.search}: java.lang.IllegalStateException: Cannot start this animator on a detached view!
                                                                           at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2665)
                                                                           at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)
                                                                           at android.app.ActivityThread.-wrap12(ActivityThread.java)
                                                                           at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477)
                                                                           at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                           at android.os.Looper.loop(Looper.java:154)
                                                                           at android.app.ActivityThread.main(ActivityThread.java:6126)
                                                                           at java.lang.reflect.Method.invoke(Native Method)
                                                                           at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
                                                                           at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
                                                                        Caused by: java.lang.IllegalStateException: Cannot start this animator on a detached view!
                                                                           at android.view.RenderNode.addAnimator(RenderNode.java:786)
                                                                           at android.view.RenderNodeAnimator.setTarget(RenderNodeAnimator.java:300)
                                                                           at android.view.RenderNodeAnimator.setTarget(RenderNodeAnimator.java:282)
                                                                           at android.animation.RevealAnimator.<init>(RevealAnimator.java:37)
                                                                           at android.view.ViewAnimationUtils.createCircularReveal(ViewAnimationUtils.java:71)
                                                                           at com.miguelcatalan.materialsearchview.utils.AnimationUtil.reveal(AnimationUtil.java:86)
                                                                           at com.miguelcatalan.materialsearchview.MaterialSearchView.setVisibleWithAnimation(MaterialSearchView.java:553)
                                                                           at com.miguelcatalan.materialsearchview.MaterialSearchView.showSearch(MaterialSearchView.java:519)
                                                                           at com.miguelcatalan.materialsearchview.MaterialSearchView.showSearch(MaterialSearchView.java:501)
                                                                           at com.buckydroid.anonchat.search.onCreate(search.java:25)
                                                                           at android.app.Activity.performCreate(Activity.java:6679)
                                                                           at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
                                                                           at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2618)
                                                                           at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726) 
                                                                           at android.app.ActivityThread.-wrap12(ActivityThread.java) 
                                                                           at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477) 
                                                                           at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                           at android.os.Looper.loop(Looper.java:154) 
                                                                           at android.app.ActivityThread.main(ActivityThread.java:6126) 
                                                                           at java.lang.reflect.Method.invoke(Native Method) 
                                                                           at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 
                                                                           at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 

2 个答案:

答案 0 :(得分:2)

onCreateOptionsMenu中,您可以拨打performClick

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.search, menu);

    MenuItem item = menu.findItem(R.id.action_search);
    searchView.setMenuItem(item);
    searchView.performClick();
    return true;
}

这应该可以胜任。

答案 1 :(得分:1)

错误似乎是由于动画重叠造成的。要禁用动画,只需使用:

searchView.showSearch(false);

要回答评论中提到的其他问题(如何将其发送回上一个活动),请使用:

searchView.setOnSearchViewListener(new MaterialSearchView.SearchViewListener() {
        @Override
        public void onSearchViewShown() {

        }

        @Override
        public void onSearchViewClosed() {
            //To close the current activity
              search.this.finish();
        }
    });