【问题标题】:A Error With Going To Intent Android使用意图 Android 的错误
【发布时间】:2016-09-01 12:54:22
【问题描述】:
package com.lazerg.apptask;


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

public class tasks extends AppCompatActivity {
    Button APlusBButton = (Button) findViewById(R.id.aplusbgoto);
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_tasks);

        APlusBButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                APlubBGotoIntent();
            }
        });
    }

    void APlubBGotoIntent(){
        Intent i = new Intent(getApplicationContext(),APlusBClass.class);
        startActivity(i);
    }
}

这是我的代码当我试图移动其他意图时它的说法

09-01 17:49:22.109 9259-9259/com.lazerg.apptask E/AndroidRuntime: FATAL EXCEPTION: main
      Process: com.lazerg.apptask, PID: 9259
      java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.lazerg.apptask/com.lazerg.apptask.tasks}: java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.Window$Callback android.view.Window.getCallback()' on a null object reference
          at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2989)
          at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3260)
          at android.app.ActivityThread.access$1000(ActivityThread.java:218)
          at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1734)
          at android.os.Handler.dispatchMessage(Handler.java:102)
          at android.os.Looper.loop(Looper.java:145)
          at android.app.ActivityThread.main(ActivityThread.java:6934)
          at java.lang.reflect.Method.invoke(Native Method)
          at java.lang.reflect.Method.invoke(Method.java:372)
          at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404)
          at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)

【问题讨论】:

标签: android android-studio android-intent


【解决方案1】:

在设置clicklistener 之前将Button APlusBButton = (Button) findViewById(R.id.aplusbgoto); 移动到onCreate 中。

试试这个代码,

public class tasks extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_tasks);

        // Move this line inside onCreate
        Button APlusBButton = (Button) findViewById(R.id.aplusbgoto);

        APlusBButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                APlubBGotoIntent();
            }
        });
    }

    void APlubBGotoIntent(){
        Intent i = new Intent(getApplicationContext(),APlusBClass.class);
        startActivity(i);
    }
}

【讨论】:

    【解决方案2】:

    在setContentView() 方法下方/之后定义按钮APlusBButton。

    public class tasks extends AppCompatActivity {
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_tasks);
        Button APlusBButton = (Button) findViewById(R.id.aplusbgoto);
    
        APlusBButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                APlubBGotoIntent();
            }
        });
    }
    
    void APlubBGotoIntent(){
        Intent i = new Intent(getApplicationContext(),APlusBClass.class);
        startActivity(i);
    }
    }
    

    【讨论】:

      【解决方案3】:

      更改自:

      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_tasks);
      
          APlusBButton.setOnClickListener(new View.OnClickListener() {
              @Override
              public void onClick(View v) {
                  APlubBGotoIntent();
              }
          });
      }
      

      收件人:

      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_tasks);
          APlusBButton = (Button) findViewById(R.id.aplusbgoto);
          APlusBButton.setOnClickListener(new View.OnClickListener() {
              @Override
              public void onClick(View v) {
                  APlubBGotoIntent();
              }
          });
      }
      

      一旦调用了setContentView,就应该调用findViewById。

      【讨论】:

        【解决方案4】:

        没有了

        setContentView(R.layout.activity_tasks);
        

        如何申报

         Button APlusBButton = (Button) findViewById(R.id.aplusbgoto);
        

        您应该在 ContentView 之后声明按钮,因为通过视图您可以如何为该视图使用小部件。

        【讨论】:

        • 好建议。谢谢
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多