Ошибка FATAL EXCEPTION: main java.lang.NullPointerException
Пишу небольшой аналог Яндекс.Метро под андроид. Есть основной класс:
public class MarkLayerTestActivity extends AppCompatActivity {
private MapView mapView;
private MarkLayer markLayer;
Dialog myDialog;
private Window window;
TextView metroname;
TextView metronameinf;
TextView infoDesc;
String nameStation;
String stationDesc;
String firtsSt;
String secSt;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mark_layer_test);
myDialog = new Dialog(this);
myDialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
mapView = (MapView) findViewById(R.id.mapview);
Bitmap bitmap = null;
try {
bitmap = BitmapFactory.decodeStream(getAssets().open("map.png"));
} catch (IOException e) {
e.printStackTrace();
}
mapView.loadMap(bitmap);
mapView.setMapViewListener(new MapViewListener() {
@Override
public void onMapLoadSuccess() {
List<PointF> marks = TestData.getMarks();
final List<String> marksName = TestData.getMarksName();
final List<String> marksDesc = TestData.getMarksDesc();
markLayer = new MarkLayer(mapView, marks, marksName);
markLayer.setMarkIsClickListener(new MarkLayer.MarkIsClickListener() {
@Override
public void markIsClick(int num) {
//Toast.makeText(getApplicationContext(), marksName.get(num) + "", Toast.LENGTH_SHORT).show();
ShowPopup(null);
nameStation = marksName.get(num);
stationDesc = marksDesc.get(num);
metroname = (TextView) myDialog.findViewById(R.id.metroname);
metroname.setText(marksName.get(num));
}
});
mapView.addLayer(markLayer);
mapView.refresh();
}
@Override
public void onMapLoadFail() {
}
});
}
public void ShowPopup (View v) {
TextView txtclose;
Button otButton;
Button sudButton;
Button infobutton;
myDialog.setContentView(R.layout.popup);
txtclose = (TextView) myDialog.findViewById(R.id.txtclose);
infobutton = (Button) myDialog.findViewById(R.id.info);
otButton = (Button) myDialog.findViewById(R.id.Ot);
sudButton = (Button) myDialog.findViewById(R.id.Sud);
txtclose.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
myDialog.dismiss();
}
});
otButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
firtsSt = nameStation;
myDialog.dismiss();
}
});
sudButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
secSt = nameStation;
ShortestPath.GraphFind(firtsSt,secSt);
myDialog.dismiss();
}
});
infobutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
myDialog.dismiss();
ShowInfo(null);
}
});
myDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
myDialog.show();
}
public void ShowTime (int dist) {
Toast.makeText(getApplicationContext(), dist + "Минут", Toast.LENGTH_SHORT).show();
}
public void ShowInfo (View v) {
TextView txtcloseinf;
myDialog.setContentView(R.layout.station_inf);
metronameinf = (TextView) myDialog.findViewById(R.id.metronameinf);
metronameinf.setText(nameStation);
infoDesc = (TextView) myDialog.findViewById(R.id.infoDesc);
infoDesc.setText(stationDesc);
txtcloseinf = (TextView) myDialog.findViewById(R.id.txtcloseinf);
txtcloseinf.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
myDialog.dismiss();
}
});
myDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
myDialog.show();
}
}
И класс который находит самый короткий путь.
В него я отправляю начальную и конечную станцию ShortestPath.GraphFind(firtsSt,secSt);
И после прогона алгоритма он находится время между этими станциями и отправляет обратно в метод ShowTime
MarkLayerTestActivity c1 = new MarkLayerTestActivity();
c1.ShowTime(EndDis);
И уже в ShowTime я хочу вызвать всплывающее сообщение:
public void ShowTime (int dist) {
Toast.makeText(getApplicationContext(), dist + "Минут", Toast.LENGTH_SHORT).show();
}
Но получаю ошибку:
E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.NullPointerException
at android.content.ContextWrapper.getApplicationContext(ContextWrapper.java:109)
at com.onlylemi.mapview.MarkLayerTestActivity.ShowTime(MarkLayerTestActivity.java:130)
А если делать через System.out.printf(" Итог: (%d) Минут", dist); то все работает.