【发布时间】:2016-06-15 11:22:13
【问题描述】:
我正在创建一个 Android 应用,一切似乎都运行良好。当我尝试将一些代码移动到另一个文件以解决问题时,问题就开始了。
假设应用有一个微调器和一个按钮。按下按钮会读取 Spinner 当前选定的字符串,并显示一个 Toast。所以代码是:
Spinner spinnerOmadas=(Spinner) findViewById(R.id.spinnerOmadas);
String omada = spinnerOmadas.getSelectedItem().toString();
Toast.makeText(getApplicationContext(), omada,Toast.LENGTH_SHORT).show();
如果我将此代码保留在主活动中按钮的 onClick 函数中,则一切正常。我想将它移动到另一个文件,因为我将向它添加更多代码。
所以我创建了一个文件buttonCalculation.java,代码如下:
package com.test.example;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.Toast;
public class buttonCalculation extends MainActivity {
public void calculate(){
Spinner spinnerOmadas=(Spinner) findViewById(R.id.spinnerOmadas);
String t1= spinnerOmadas.getSelectedItem().toString();
Toast.makeText(getApplicationContext(), t1, Toast.LENGTH_SHORT).show();
}
}
在主要活动的 onClick 方法中,我这样做:
buttonCalculation b1 = new buttonCalculation();
b1.calculate();
根据我的方法,Android Studio 没有错误,但是当我运行应用程序并按下按钮时,它崩溃了。
有什么我必须声明才能找到主 Activity 的对象吗?
【问题讨论】:
-
使用实例。
-
这不应该是你收拾东西的方式。如果有的话,你会让它变得更加复杂和难以维护。
-
嘿伙计。我努力阅读您的日志并将错误粘贴到您的问题中。你回复了那个?您拒绝向我们展示您的错误是怎么回事?
-
什么意思?什么拒绝?你要了我的 logcat,我把它贴出来了。 @shantanu 的回答有效。问题是布局没有在任何地方定义,如果不传递给新的类/方法就无法访问。
-
您的日志包含:java.lang.NullPointerException at android.app.Activity.findViewById(Activity.java:1825) at com.duk3r.prisma.buttonCalculation.calculate(buttonCalculation.java:14) at com.duk3r.prisma.MainActivity$1.onClick(MainActivity.java:53) 等等...如果您将其留在问题中(就像我为您添加的那样)而不是 6000 行 logcat,那将这是一个完美的问题。
标签: java android function class