【问题标题】:Error on setOnClickListener Android StudiosetOnClickListener Android Studio 上的错误
【发布时间】:2016-12-05 14:22:08
【问题描述】:

我想创建一个将 web 视图重定向到特定页面的按钮。显示的错误是:'setOnclickListener never used before'。我试过提供 import android.view.View.OnClickListener 并没有奏效。

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



}

【问题讨论】:

  • 所有按钮代码都需要在方法中。将其移动到onCreate()的底部
  • 你能举个例子吗?我是初学者。 @codeMagic

标签: android android-studio onclicklistener


【解决方案1】:

方法之外的代码在onCreate() 或任何其他方法之前运行。因此,尝试以这种方式初始化View,例如Button,将导致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);
        }
    });


}

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-07
    • 1970-01-01
    • 2015-03-24
    相关资源
    最近更新 更多