2016-12-05 127 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); 
     } 
    }); 


} 

我不確定這是不是你確切的錯誤,因爲它聽起來不對,但肯定會導致錯誤。我認爲你甚至在運行該程序之前看到的是一個編譯器警告,但我對此並不積極。