首页 文章

android:onclick方法不起作用

提问于
浏览
0

xml代码:

<Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Invia"
            android:clickable="true"
            android:onClick="onClick1"
            android:id="@+id/invia" />

java代码:

import android.app.Activity;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;

import java.util.HashMap;
import java.util.Locale;
import java.util.Map;

public class CreazioneSondaggio extends AppCompatActivity   {

    String URL;
    private EditText titolo;
    private EditText sceltaA;
    private EditText sceltaB;
    private EditText sceltaC;
   private Button invio;
    private EditText server;
    @Override
    protected void onCreate(Bundle savedInstanceState)  {
        titolo = (EditText) findViewById(R.id.titolo);
        sceltaA = (EditText) findViewById(R.id.A);
        sceltaB = (EditText) findViewById(R.id.B);
        sceltaC = (EditText) findViewById(R.id.C);
        server= (EditText) findViewById(R.id.server);
       invio = (Button) findViewById(R.id.invia);

       // invio.setOnClickListener(this);

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_creazione_sondaggio);
    }

    private void inviodati() {
        ......
    }

    public void onClick1(View v) {
        Toast.makeText(CreazioneSondaggio.this, "ok", Toast.LENGTH_LONG).show();

           inviodati();



    }


}

错误:

进程:com.example.rober.registrazione,PID:21261 java.lang.IllegalStateException:无法执行android的方法:onClick at android.support.v7.app.AppCompatViewInflater $ DeclaredOnClickListener.onClick(AppCompatViewInflater.java:275)at android.view.View.performClick(View.java:5210)在android.view.View $ PerformClick.run(View.java:21288)android.os.Handler.handleCallback(Handler.java:739)android.os .Handler.dispatchMessage(Handler.java:95)位于android.app.Looper.loop(Looper.java:148)的android.app.ActivityThread.main(ActivityThread.java:5527),位于java.lang.reflect.Method . com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:730)在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)中调用(Native Method)引起:java . 位于android.view.View.p的android.support.v7.app.AppCompatViewInflater $ DeclaredOnClickListener.onClick(AppCompatViewInflater.java:270)的java.lang.reflect.Method.invoke(Native Method)中的lang.reflect.InvocationTargetException在Android.os.Handler.dispatchMessage(处理程序)的android.view.View $ PerformClick.run(View.java:21288)的android.os.Handler.handleCallback(Handler.java:739)上的erformClick(View.java:5210) .java:95)在android.app.Looper.loop(Looper.java:148)的android.app.ActivityThread.main(ActivityThread.java:5527)at java.lang.reflect.Method.invoke(Native Method)at at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:730)at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)引起:java.lang.NullPointerException:尝试在com.example.rober上的com.example.rober.registrazione.CreazioneSondaggio.inviodati(CreazioneSondaggio.java:48)上的空对象引用上调用虚拟方法'android.text.Editable android.widget.EditText.getText()' . registrazione.CreazioneSondaggio.onClick1(CreazioneSondaggio.java:87)at java.lang.reflect.Method.invoke(Native Method)at android.support.v7.app.AppCompatViewInflater $ DeclaredOnClickListener.onClick(AppCompatViewInflater.java:270)在android.view.View.performClick(View.java:5210)的android.view.View $ PerformClick.run(View.java:21288)在Android上的android.os.Handler.handleCallback(Handler.java:739) . android.app.Looper.loop(Looper.java:148)的os.Handler.dispatchMessage(Handler.java:95)位于android.app.ActivityThread.main(ActivityThread.java:5527)的java.lang.reflect.Method .invoke(Native Method)位于com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:730)com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)

我该如何解决?

5 回答

  • 0

    更新你的oncreate方法

    protected void onCreate(Bundle savedInstanceState)  {
      super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_creazione_sondaggio);
            titolo = (EditText) findViewById(R.id.titolo);
            sceltaA = (EditText) findViewById(R.id.A);
            sceltaB = (EditText) findViewById(R.id.B);
            sceltaC = (EditText) findViewById(R.id.C);
            server= (EditText) findViewById(R.id.server);
           invio = (Button) findViewById(R.id.invia);
    
           // invio.setOnClickListener(this);
    
    
        }
    
  • 2

    这样做......

    super.onCreate(savedInstanceState);
            setContentView(R.layout.your_layout);
        InviaButton = (TextView) findViewById(R.id.invia);
    
         InviaButton.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
        //your_code
          }
        }
    
  • 0

    Xml布局:

    <Button
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:text="Invia"
         android:clickable="true"
         android:id="@+id/invia" />
    

    将以下代码添加到您的活动:

    @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.your_layout);
    
            titolo = (EditText) findViewById(R.id.titolo);
            sceltaA = (EditText) findViewById(R.id.A);
            sceltaB = (EditText) findViewById(R.id.B);
            sceltaC = (EditText) findViewById(R.id.C);
            server= (EditText) findViewById(R.id.server);
            invio = (Button) findViewById(R.id.invia);
    
            invio.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Toast.makeText(CreazioneSondaggio.this, "ok", Toast.LENGTH_LONG).show();
                    // code
                }
            });
    
        }
    
  • 0

    一旦布局膨胀到活动,您需要找到每个活动视图,如下所示

    super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_creazione_sondaggio);
    
        titolo = (EditText) findViewById(R.id.titolo);
        sceltaA = (EditText) findViewById(R.id.A);
        sceltaB = (EditText) findViewById(R.id.B);
        sceltaC = (EditText) findViewById(R.id.C);
        server= (EditText) findViewById(R.id.server);
    

    既然你已经使用了属性onClick,则无需启动Button引用即可直接执行

    public void onClick1(View v) {
    
               if(v.getId() == R.id.invia)
               {
    
               }
    
    
            }
    
  • 0

    在这里阅读完整的堆栈就是说java.lang.NullPointerException:尝试调用虚拟方法'android.text.Editable android.widget.EditText.getText()'你还没有初始化EditText但是你在onClick方法中使用它 . 试着搞清楚 .

相关问题