1
我想在用户点击webview(HTML)按钮时打开导航窗格。我有一个代码,当我使用Android按钮时工作正常,但当我使用HTML按钮时它不起作用。当您从左侧拖动导航抽屉时会显示导航抽屉,但在您单击HTML按钮时不会显示。无法打开webview按钮的导航抽屉点击
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"
\t android:layout_height="wrap_content"
\t android:onClick="open"
android:text="Button" /> -->
<WebView
\t android:id="@+id/webView1"
\t android:layout_width="match_parent"
\t 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 {
\t String[] month = { "January", "February", "March", "April", "May", "June",
\t \t \t "July", "August", "September", "October", "November", "December" };
\t @Override
\t public void onCreate(Bundle savedInstanceState) {
\t \t super.onCreate(savedInstanceState);
\t \t ListAdapter myListAdapter = new ArrayAdapter<String>(getActivity(),
\t \t \t \t android.R.layout.simple_list_item_1, month);
\t \t setListAdapter(myListAdapter);
\t }
\t @Override
\t public View onCreateView(LayoutInflater inflater, ViewGroup container,
\t \t \t Bundle savedInstanceState) {
\t \t return inflater.inflate(R.layout.listfragment1, container, false);
\t }
\t @Override
\t public void onListItemClick(ListView l, View v, int position, long id) {
\t \t // TODO Auto-generated method stub
\t \t Toast.makeText(getActivity(),
\t \t \t \t getListView().getItemAtPosition(position).toString(),
\t \t \t \t Toast.LENGTH_LONG).show();
\t }
}
MainActivity
public class MainActivity extends Activity {
\t
\t private DrawerLayout drawerLayout;
\t private View drawerView;
\t WebView wv;
\t @SuppressLint("SetJavaScriptEnabled")
\t @Override
\t protected void onCreate(Bundle savedInstanceState) {
\t \t super.onCreate(savedInstanceState);
\t \t setContentView(R.layout.activity_main);
\t \t
\t \t drawerLayout = (DrawerLayout)findViewById(R.id.drawer_layout);
\t \t drawerView = (View)findViewById(R.id.drawer);
\t \t
\t \t /*Button buttonOpenDrawer = (Button)findViewById(R.id.opendrawer);
\t \t buttonOpenDrawer.setOnClickListener(new OnClickListener(){
\t \t \t @Override
\t \t \t public void onClick(View arg0) {
\t \t \t \t drawerLayout.openDrawer(drawerView);
\t \t \t }
\t \t }); */
\t \t
\t \t wv = (WebView)findViewById(R.id.webView1);
\t \t wv.getSettings().setJavaScriptEnabled(true);
\t \t wv.addJavascriptInterface(new WebAppInterface(this), "Luke");
\t \t wv.loadUrl("file:///android_asset/www/mind.html");
\t \t
\t \t drawerLayout.setDrawerListener(myDrawerListener);
\t } //onCreate ends
\t DrawerListener myDrawerListener = new DrawerListener(){
\t \t @Override
\t \t public void onDrawerClosed(View drawerView) {
\t \t \t //textPrompt.setText("onDrawerClosed");
\t \t }
\t \t @Override
\t \t public void onDrawerOpened(View drawerView) {
\t \t \t //textPrompt.setText("onDrawerOpened");
\t \t }
\t \t @Override
\t \t public void onDrawerSlide(View drawerView, float slideOffset) {
\t \t \t //textPrompt.setText("onDrawerSlide: " + String.format("%.2f", slideOffset));
\t \t }
\t \t @Override
\t \t public void onDrawerStateChanged(int newState) {
\t \t \t String state;
\t \t \t switch(newState){
\t \t \t case DrawerLayout.STATE_IDLE:
\t \t \t \t state = "STATE_IDLE";
\t \t \t \t break;
\t \t \t case DrawerLayout.STATE_DRAGGING:
\t \t \t \t state = "STATE_DRAGGING";
\t \t \t \t break;
\t \t \t case DrawerLayout.STATE_SETTLING:
\t \t \t \t state = "STATE_SETTLING";
\t \t \t \t break;
\t \t \t default:
\t \t \t \t state = "unknown!";
\t \t \t }
\t \t \t \t
\t \t \t //textPrompt2.setText(state);
\t \t }};
\t
\t \t
\t \t public class WebAppInterface {
\t \t Context mContext;
\t \t
\t \t WebAppInterface(Context c) {
\t \t mContext = c;
\t \t }
\t \t
\t \t @JavascriptInterface
\t \t public void showDialog() {
\t \t
\t \t \t
\t \t \t drawerLayout.openDrawer(drawerView);
\t \t \t
\t \t \t //Toast.makeText(getApplicationContext(), "Good", Toast.LENGTH_SHORT).show();
\t \t }
\t \t }
\t \t
\t \t /*public void open(View v){
\t \t \t drawerLayout.openDrawer(drawerView);
\t \t } */
\t
\t
\t
\t
\t
\t
} //Activity ends
是的showDialog()方法可以很好地用于显示Toast等其他内容。 –
太棒了。非常感谢。它的工作现在。 –