2017-01-19 4 views
2

検索ビューにhttps://github.com/MiguelCatalan/MaterialSearchViewを使用しています。 私は私の現在のコードは次のコード素材検索ビューをデフォルトで開いたままにする方法

にそれを更新した後Nayan Srivastava氏の答えによると

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; 
    } 
} 

ある

search view

..私はmaterialsearchactivityに行くと、検索ビューを開いておきたいです

@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)  
+1

エラーはアニメーションによるものです。代わりに 'searchView.showSearch(false);'を使用してください。 –

答えて

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; 
} 

これを呼び出すことができます。

searchView.showSearch(false);

をコメントで尋ねた他の質問に答えるために(以前の活動に戻ってそれを送信する方法):

+0

これを実行するとエラーが発生します。エラーログを更新しました – Doge

+0

'onCreateOptionsMenu'でこれを試してください –

+0

代わりにrequestFocus();を試してください。 –

1

エラーがoverlapping.Toだけ使用したアニメーションを無効にするため、アニメーションにあると思われます

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

     } 

     @Override 
     public void onSearchViewClosed() { 
      //To close the current activity 
       search.this.finish(); 
     } 
    }); 
関連する問題