2016-12-05 95 views
1

我想创建一个按钮,将webview重定向到某个页面。显示的错误是:'setOnclickListener before before'。我试过给导入android.view.View.OnClickListener并没有工作。setOnClickListener Android Studio错误

import android.content.Intent; 
import android.net.Uri; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.support.v7.widget.Toolbar; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.webkit.WebChromeClient; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 
import android.widget.Button; 
import android.widget.TextView; 


import static sitesegundo.site.R.styleable.View; 

public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     //configuração do icone no title bar 
     getSupportActionBar().setDisplayShowHomeEnabled(true); 
     getSupportActionBar().setLogo(R.drawable.icon); 
     getSupportActionBar().setDisplayUseLogoEnabled(true); 

     // configuração webview 
     setContentView(R.layout.activity_main); 
     WebView webView = (WebView) findViewById(R.id.webView); 
     webView.loadUrl("file:///android_asset/www/index.html"); 
     webView.getSettings().setJavaScriptEnabled(true); 
     webView.setWebViewClient(new WebViewClient()); 
     webView.setWebChromeClient(new WebChromeClient()); 

     // configuracao subtitulo titlebar 
     getSupportActionBar().setTitle(" Adote A4"); 
     //getSupportActionBar().setSubtitle(""); 


    } 


    @Override 

    public boolean onCreateOptionsMenu(Menu menu){ 
     getMenuInflater().inflate(R.menu.menu_main, menu); 
     return super.onCreateOptionsMenu(menu); 
    } 


    Button button = (Button)findViewById(R.id.adocao); 

    button.setOnClickListener(new OnClickListener(Object arg0) { 
     public void onClick(View arg0) { 
      Intent viewIntent = 
        new Intent("android.intent.action.VIEW", 
          Uri.parse("http://www.stackoverflow.com/")); 
      startActivity(viewIntent); 
     } 
    }); 



} 
+3

所有的按钮代码都需要在方法中。将它移动到'onCreate()'的底部 – codeMagic

+0

你能举个例子吗?我是初学者。 @codeMagic –

回答

0

该方法以外的代码在onCreate()或任何其他方法之前运行。所以试图初始化一个ViewButton这样会导致Button为空,并给你一个NullPointerException

将此代码移动到onCreate()的底部应该可以解决您的问题。只要确保setContentView()之后试图初始化任何View之前将返回null。

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    //configuração do icone no title bar 
    getSupportActionBar().setDisplayShowHomeEnabled(true); 
    getSupportActionBar().setLogo(R.drawable.icon); 
    getSupportActionBar().setDisplayUseLogoEnabled(true); 

    // configuração webview 
    setContentView(R.layout.activity_main); 
    WebView webView = (WebView) findViewById(R.id.webView); 
    webView.loadUrl("file:///android_asset/www/index.html"); 
    webView.getSettings().setJavaScriptEnabled(true); 
    webView.setWebViewClient(new WebViewClient()); 
    webView.setWebChromeClient(new WebChromeClient()); 

    // configuracao subtitulo titlebar 
    getSupportActionBar().setTitle(" Adote A4"); 
    //getSupportActionBar().setSubtitle(""); 

    // LOOK HERE 
    Button button = (Button)findViewById(R.id.adocao); 

    button.setOnClickListener(new OnClickListener(Object arg0) { 
     public void onClick(View arg0) { 
      Intent viewIntent = 
       new Intent("android.intent.action.VIEW", 
         Uri.parse("http://www.stackoverflow.com/")); 
      startActivity(viewIntent); 
     } 
    }); 


} 

我不确定这是不是你确切的错误,因为它听起来不对,但肯定会导致错误。我认为你甚至在运行该程序之前看到的是一个编译器警告,但我对此并不积极。