簡體   English   中英

導航抽屜未打開 webview 按鈕單擊

[英]navigation drawer not opening for webview button click

當用戶單擊 webview (HTML) 按鈕時,我試圖打開一個導航抽屜。 我有一個代碼,當我使用 Android 按鈕時它工作正常,但當我使用 HTML 按鈕時它不起作用。 導航抽屜在您從左側拖動時顯示,但在單擊 HTML 按鈕時不顯示。

 activity_main <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" > <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/background_light" android:orientation="vertical" > <!-- <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="open" android:text="Button" /> --> <WebView android:id="@+id/webView1" android:layout_width="match_parent" android:layout_height="match_parent" /> </LinearLayout> <LinearLayout android:id="@+id/drawer" android:layout_width="240dp" android:layout_height="match_parent" android:layout_gravity="start" android:background="@android:color/background_light" android:orientation="vertical" android:padding="5dp" > <fragment android:id="@+id/fragment1" android:name="com.example.webviewnav.MyListFragment1" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" /> </LinearLayout> </android.support.v4.widget.DrawerLayout>
 MyListFragment1 public class MyListFragment1 extends ListFragment { String[] month = { "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ListAdapter myListAdapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1, month); setListAdapter(myListAdapter); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.listfragment1, container, false); } @Override public void onListItemClick(ListView l, View v, int position, long id) { // TODO Auto-generated method stub Toast.makeText(getActivity(), getListView().getItemAtPosition(position).toString(), Toast.LENGTH_LONG).show(); } }
 MainActivity public class MainActivity extends Activity { private DrawerLayout drawerLayout; private View drawerView; WebView wv; @SuppressLint("SetJavaScriptEnabled") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); drawerLayout = (DrawerLayout)findViewById(R.id.drawer_layout); drawerView = (View)findViewById(R.id.drawer); /*Button buttonOpenDrawer = (Button)findViewById(R.id.opendrawer); buttonOpenDrawer.setOnClickListener(new OnClickListener(){ @Override public void onClick(View arg0) { drawerLayout.openDrawer(drawerView); } }); */ wv = (WebView)findViewById(R.id.webView1); wv.getSettings().setJavaScriptEnabled(true); wv.addJavascriptInterface(new WebAppInterface(this), "Luke"); wv.loadUrl("file:///android_asset/www/mind.html"); drawerLayout.setDrawerListener(myDrawerListener); } //onCreate ends DrawerListener myDrawerListener = new DrawerListener(){ @Override public void onDrawerClosed(View drawerView) { //textPrompt.setText("onDrawerClosed"); } @Override public void onDrawerOpened(View drawerView) { //textPrompt.setText("onDrawerOpened"); } @Override public void onDrawerSlide(View drawerView, float slideOffset) { //textPrompt.setText("onDrawerSlide: " + String.format("%.2f", slideOffset)); } @Override public void onDrawerStateChanged(int newState) { String state; switch(newState){ case DrawerLayout.STATE_IDLE: state = "STATE_IDLE"; break; case DrawerLayout.STATE_DRAGGING: state = "STATE_DRAGGING"; break; case DrawerLayout.STATE_SETTLING: state = "STATE_SETTLING"; break; default: state = "unknown!"; } //textPrompt2.setText(state); }}; public class WebAppInterface { Context mContext; WebAppInterface(Context c) { mContext = c; } @JavascriptInterface public void showDialog() { drawerLayout.openDrawer(drawerView); //Toast.makeText(getApplicationContext(), "Good", Toast.LENGTH_SHORT).show(); } } /*public void open(View v){ drawerLayout.openDrawer(drawerView); } */ } //Activity ends

是否調用showDialog方法? 如果是這樣,請嘗試從 UI 線程調用 drawerLayout.openDrawer: MainActivity.this.runOnUiThread(...)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM