私はフォルダからファイルを読み込んで、それから配列を生成し、その後、配列の緯度+経度点を地図上にプロットするAndroidアプリケーションを作っています。私は最初に、別のプログラムでvoidメソッドとして配列戻りメソッドを開発しました(正しく機能しました)。私が行った唯一の変更は、アンドロイドアプリで使用できるように、配列を返すようにしたことです。しかし、私はいつも強制閉鎖した。いくつかのデバッグの後、私のメソッドはいつもnullを返していることがわかりました(配列がnullの場合、 "FAIL!"という画面を表示し、アプリケーションは常に "FAIL!" 。配列常に返されるNull
ファイルが正しい場所にあることを確認しました。これは間違いありません。それでも、なぜプログラムがnullを返すのか不明です。ここに私のコードの一部です:
package net.learn2develop.GoogleMaps;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.List;
import java.util.StringTokenizer;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapController;
import com.google.android.maps.MapView;
import com.google.android.maps.Overlay;
import com.google.android.maps.MapView.LayoutParams;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Point;
import android.os.Bundle;
import android.view.View;
import android.widget.LinearLayout;
public class MapsActivity extends MapActivity
{
MapView mapView;
MapController mc;
GeoPoint p;
GeoPoint p2;
GeoPoint p99;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Map code goes here.....
// Add points from ReadCsv.java
File fileToUse = new File("/Users/csrobot/Desktop/TrainingData/Training4.csv");
String[][] bump = getArray(fileToUse);
if(bump == null){
setContentView(R.layout.deleteme);
}
// for(int i = 0; i < bump.length; i++) {
// String coordinates99[] = {bump[i][0], bump[i][1]};
// double lat99 = Double.parseDouble(coordinates99[0]);
// double lng99 = Double.parseDouble(coordinates99[1]);
// p99 = new GeoPoint(
// (int) (lat99 * 1E6),
// (int) (lng99 * 1E6));
// MapOverlay mapOverlay99 = new MapOverlay();
// List<Overlay> listOfOverlays99 = mapView.getOverlays();
// listOfOverlays99.add(mapOverlay99);
// }
mapView.invalidate();
}
@Override
protected boolean isRouteDisplayed() {
return false;
}
public String[][] getArray(File file) {
try {
int row = 0;
int col = 0;
String[][] numbers=new String[5258][16];
BufferedReader bufRdr;
bufRdr = new BufferedReader(new FileReader(file));
String line = null;
//read each line of text file
while((line = bufRdr.readLine()) != null) {
StringTokenizer st = new StringTokenizer(line,",");
col=0;
while (st.hasMoreTokens()) {
//get next token and store it in the array
numbers[row][col] = st.nextToken();
col++;
}
row++;
}
// ... Here is the code that will make the array
// ...
//close the file
bufRdr.close();
return arrayOfBumps;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch(Exception e) {
// System.out.println("The following error occurred "+e);
}
return null;
}
だから、私の活動がどのように見えるかです。
07-28 09:11:10.962: ERROR/AndroidRuntime(13014): FATAL EXCEPTION: main
07-28 09:11:10.962: ERROR/AndroidRuntime(13014): java.lang.RuntimeException: Unable to start activity ComponentInfo{net.learn2develop.GoogleMaps/net.learn2develop.GoogleMaps.MapsActivity}: java.lang.NullPointerException
07-28 09:11:10.962: ERROR/AndroidRuntime(13014): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
07-28 09:11:10.962: ERROR/AndroidRuntime(13014): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
07-28 09:11:10.962: ERROR/AndroidRuntime(13014): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
07-28 09:11:10.962: ERROR/AndroidRuntime(13014): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
07-28 09:11:10.962: ERROR/AndroidRuntime(13014): at android.os.Handler.dispatchMessage(Handler.java:99)
07-28 09:11:10.962: ERROR/AndroidRuntime(13014): at android.os.Looper.loop(Looper.java:123)
07-28 09:11:10.962: ERROR/AndroidRuntime(13014): at android.app.ActivityThread.main(ActivityThread.java:4627)
07-28 09:11:10.962: ERROR/AndroidRuntime(13014): at java.lang.reflect.Method.invokeNative(Native Method)
07-28 09:11:10.962: ERROR/AndroidRuntime(13014): at java.lang.reflect.Method.invoke(Method.java:521)
07-28 09:11:10.962: ERROR/AndroidRuntime(13014): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
07-28 09:11:10.962: ERROR/AndroidRuntime(13014): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
07-28 09:11:10.962: ERROR/AndroidRuntime(13014): at dalvik.system.NativeStart.main(Native Method)
07-28 09:11:10.962: ERROR/AndroidRuntime(13014): Caused by: java.lang.NullPointerException
07-28 09:11:10.962: ERROR/AndroidRuntime(13014): at net.learn2develop.GoogleMaps.MapsActivity.onCreate(MapsActivity.java:89)
07-28 09:11:10.962: ERROR/AndroidRuntime(13014): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
07-28 09:11:10.962: ERROR/AndroidRuntime(13014): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
07-28 09:11:10.962: ERROR/AndroidRuntime(13014): ... 11 more
をので、誰もがここで私を助けることができます:「もし(バンプ== null)の」文と、それがあった次の「for」ループアンコメントを追加する前に、私のlogcat?私は数日間これをしてきましたが、まだそれを理解することはできません。
私の資産フォルダにcsvファイルを置く。私はすでに2つの例を探しましたが、 "Activity.getAssets()。open(...)"のようなことをする人がいます。私はここで少し混乱している。 – Mxyk