【发布时间】:2014-07-09 08:23:24
【问题描述】:
所以我的主要活动类 populateButton 中有一个按钮,它调用另一个类(.java 文件)中的方法并传递一个数组。这个主类文件还有一个方法可以将一些数据添加到一个名为 addNumber 的 TextView 中:
public class CheckerActivity extends Activity {
public TextView displayArray;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_checker);UMBERS_ARRAY);
displayArray = (TextView) findViewById(R.id.currentNumbers);
}
public void populateButton(View view) {
try {
String[] arrayOfLatestWinner = {"1", "2", "3", "4", "5", "6", "7", "8", "9"};
variousMethods giveArrayOfLatestWinners = new variousMethods();
String[] tester = giveArrayOfLatestWinners.checkNumbers(CheckerActivity.this, arrayOfLatestWinner);
} catch (Exception e) {
e.printStackTrace();
}
}
public void addNumber(String[] numbersToAdd) {
displayArray.setText(Arrays.toString(numbersToAdd));
}
我还有另一个类(.java 文件),其中包含一个名为 checkNumbers 的方法,该方法是从上面的 populateButton 调用的。
public class variousMethods {
public String[] checkNumbers(Context context, String[] latestNumbersArray) {
try {
File myNumbersFile = new File((Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS + context.getString(R.string.my_lotto_numbers_file))).toString());
BufferedReader myNumbersFileReader = new BufferedReader(new FileReader(myNumbersFile));
String inputLineOfMyNumbersFile;
inputLineOfMyNumbersFile = myNumbersFileReader.readLine();
while (inputLineOfMyNumbersFile != null) {
String[] arrayOfInputLine = inputLineOfMyNumbersFile.split(" ");
// Bad Code
CheckerActivity addNumbers = new CheckerActivity();
addNumbers.addNumber(arrayOfInputLine);
//SORRY, MISSED THIS LINE
inputLineOfMyNumbersFile = myNumbersFileReader.readLine();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
当 populatButton 被推送时,它会发送 String[] arrayOfLatestWinner 到 checkNumbers 中的各种方法。没关系。打开一个文件,我想要发生的是一次返回文件的一行,并通过 addNumbers(String[] numbersToAdd) 在 TextView 中显示它。 (我在这段代码中依赖只有最后一行最终会显示出来,最终会填充一个 GridView) 但是对 addNumber 的调用给出了 NullPointerException。
请问我哪里出错了?
logcat 是:
07-09 18:18:54.310 29028-29028/au.com.acent.ash.basiclottochecker W/System.err﹕ java.lang.NullPointerException
07-09 18:18:54.320 29028-29028/au.com.acent.ash.basiclottochecker W/System.err﹕ at au.com.acent.ash.basiclottochecker.CheckerActivity.addNumber(CheckerActivity.java:84)
07-09 18:18:54.320 29028-29028/au.com.acent.ash.basiclottochecker W/System.err﹕ at au.com.acent.ash.basiclottochecker.variousMethods.checkNumbers(variousMethods.java:55)
07-09 18:18:54.320 29028-29028/au.com.acent.ash.basiclottochecker W/System.err﹕ at au.com.acent.ash.basiclottochecker.CheckerActivity.populateButton(CheckerActivity.java:51)
07-09 18:18:54.320 29028-29028/au.com.acent.ash.basiclottochecker W/System.err﹕ at java.lang.reflect.Method.invokeNative(Native Method)
07-09 18:18:54.320 29028-29028/au.com.acent.ash.basiclottochecker W/System.err﹕ at java.lang.reflect.Method.invoke(Method.java:525)
07-09 18:18:54.320 29028-29028/au.com.acent.ash.basiclottochecker W/System.err﹕ at android.view.View$1.onClick(View.java:3809)
07-09 18:18:54.320 29028-29028/au.com.acent.ash.basiclottochecker W/System.err﹕ at android.view.View.performClick(View.java:4421)
07-09 18:18:54.320 29028-29028/au.com.acent.ash.basiclottochecker W/System.err﹕ at android.view.View$PerformClick.run(View.java:17903)
07-09 18:18:54.320 29028-29028/au.com.acent.ash.basiclottochecker W/System.err﹕ at android.os.Handler.handleCallback(Handler.java:730)
07-09 18:18:54.320 29028-29028/au.com.acent.ash.basiclottochecker W/System.err﹕ at android.os.Handler.dispatchMessage(Handler.java:92)
07-09 18:18:54.320 29028-29028/au.com.acent.ash.basiclottochecker W/System.err﹕ at android.os.Looper.loop(Looper.java:213)
07-09 18:18:54.320 29028-29028/au.com.acent.ash.basiclottochecker W/System.err﹕ at android.app.ActivityThread.main(ActivityThread.java:5225)
07-09 18:18:54.320 29028-29028/au.com.acent.ash.basiclottochecker W/System.err﹕ at java.lang.reflect.Method.invokeNative(Native Method)
07-09 18:18:54.320 29028-29028/au.com.acent.ash.basiclottochecker W/System.err﹕ at java.lang.reflect.Method.invoke(Method.java:525)
07-09 18:18:54.320 29028-29028/au.com.acent.ash.basiclottochecker W/System.err﹕ at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:741)
07-09 18:18:54.320 29028-29028/au.com.acent.ash.basiclottochecker W/System.err﹕ at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
07-09 18:18:54.320 29028-29028/au.com.acent.ash.basiclottochecker W/System.err﹕ at dalvik.system.NativeStart.main(Native Method)
07-09 18:18:54.320 29028-29028/au.com.acent.ash.basiclottochecker W/System.err﹕ java.lang.ArrayIndexOutOfBoundsException: length=0; index=0
07-09 18:18:54.320 29028-29028/au.com.acent.ash.basiclottochecker W/System.err﹕ at au.com.acent.ash.basiclottochecker.variousMethods.checkNumbers(variousMethods.java:93)
07-09 18:18:54.320 29028-29028/au.com.acent.ash.basiclottochecker W/System.err﹕ at au.com.acent.ash.basiclottochecker.CheckerActivity.populateButton(CheckerActivity.java:51)
07-09 18:18:54.320 29028-29028/au.com.acent.ash.basiclottochecker W/System.err﹕ at java.lang.reflect.Method.invokeNative(Native Method)
07-09 18:18:54.320 29028-29028/au.com.acent.ash.basiclottochecker W/System.err﹕ at java.lang.reflect.Method.invoke(Method.java:525)
07-09 18:18:54.320 29028-29028/au.com.acent.ash.basiclottochecker W/System.err﹕ at android.view.View$1.onClick(View.java:3809)
07-09 18:18:54.320 29028-29028/au.com.acent.ash.basiclottochecker W/System.err﹕ at android.view.View.performClick(View.java:4421)
07-09 18:18:54.320 29028-29028/au.com.acent.ash.basiclottochecker W/System.err﹕ at android.view.View$PerformClick.run(View.java:17903)
07-09 18:18:54.320 29028-29028/au.com.acent.ash.basiclottochecker W/System.err﹕ at android.os.Handler.handleCallback(Handler.java:730)
07-09 18:18:54.320 29028-29028/au.com.acent.ash.basiclottochecker W/System.err﹕ at android.os.Handler.dispatchMessage(Handler.java:92)
07-09 18:18:54.320 29028-29028/au.com.acent.ash.basiclottochecker W/System.err﹕ at android.os.Looper.loop(Looper.java:213)
07-09 18:18:54.320 29028-29028/au.com.acent.ash.basiclottochecker W/System.err﹕ at android.app.ActivityThread.main(ActivityThread.java:5225)
07-09 18:18:54.320 29028-29028/au.com.acent.ash.basiclottochecker W/System.err﹕ at java.lang.reflect.Method.invokeNative(Native Method)
07-09 18:18:54.320 29028-29028/au.com.acent.ash.basiclottochecker W/System.err﹕ at java.lang.reflect.Method.invoke(Method.java:525)
07-09 18:18:54.320 29028-29028/au.com.acent.ash.basiclottochecker W/System.err﹕ at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:741)
07-09 18:18:54.320 29028-29028/au.com.acent.ash.basiclottochecker W/System.err﹕ at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
07-09 18:18:54.320 29028-29028/au.com.acent.ash.basiclottochecker W/System.err﹕ at dalvik.system.NativeStart.main(Native Method)`
【问题讨论】:
-
context 为空,这就是你得到 NPE 的原因。你也不能像这样创建活动实例。
标签: java android nullpointerexception