2017-03-07 2 views
-2

Nach der Installation der App auf dem Gerät wird die App unmittelbar nach dem Öffnen geschlossen.Android-App wird unmittelbar nach dem Öffnen geschlossen

Ich lerne Android durch Udacity. In Lektion 3 gaben sie mir Android-Code mit Mindestlayout. [Udacity-Code] [1]. Daher wurde der vollständige Code entwickelt, der den Standort und das Datum der Größe in einem Adapter-Ansichtsformat anzeigt.

Studio ist kein Fehler zeigt, aber wenn ich die Cursor platzieren auf getMagnitude() Methode Es zeigt Methodenaufruf getMagnitude kann produzieren ‚java.lang.NullPointerException‘ und für setAdapter auch ist es elbe zeigt und Mein vollständiger Code ist hören

EarthquakeActivity.java 




/*`` 
* Copyright (C) 2016 The Android Open Source Project 
* 
* Licensed under the Apache License, Version 2.0 (the "License"); 
* you may not use this file except in compliance with the License. 
* You may obtain a copy of the License at 
* 
*  http://www.apache.org/licenses/LICENSE-2.0 
* 
* Unless required by applicable law or agreed to in writing, software 
* distributed under the License is distributed on an "AS IS" BASIS, 
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
* See the License for the specific language governing permissions and 
* limitations under the License. 
*/ 
package com.example.android.quakereport; 
import java.lang.String; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 

import java.util.ArrayList; 

public class EarthquakeActivity extends AppCompatActivity { 

    public static final String LOG_TAG = EarthquakeActivity.class.getName(); 

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

     // Create a fake list of earthquake locations. 
     ArrayList<Earthquake> earthquakes = new ArrayList<>(); 
     earthquakes.add(new Earthquake("7.2","San Francisco", "Feb 2,2017 ")); 
     earthquakes.add(new Earthquake("5.2","London", "Oct 2,2017 ")); 
     earthquakes.add(new Earthquake("9.2","Tokyo", "Feb 2,2017 ")); 
     earthquakes.add(new Earthquake("8.2","Mexico City", "Mar 2,2017 ")); 
     earthquakes.add(new Earthquake("7.2","Mascow", "Feb 16,2017 ")); 
     earthquakes.add(new Earthquake("6.2","Rio de Jeneiro", "Feb 28,2017 ")); 
     earthquakes.add(new Earthquake("1.2","India", "Jan 2,2017 ")); 


     // Find a reference to the {@link ListView} in the layout 
     ListView earthquakeListView = (ListView) findViewById(R.id.list); 

     // Create a new {@link ArrayAdapter} of earthquakes 
    EarthquakeAdapter adapter = new EarthquakeAdapter(this ,earthquakes); 

     // Set the adapter on the {@link ListView} 
     // so the list can be populated in the user interface 
     earthquakeListView.setAdapter(adapter); 
    } 
} 

Earthquake.java

package com.example.android.quakereport; 

/** 
* Created by raghavendra on 3/7/2017. 
*/ 

public class Earthquake { 


    private String mMagnitude; 

    private String mLocation; 

    private String mDate; 


    public Earthquake(String Magnitude, String Location, String Date) 
    { 
     mMagnitude = Magnitude; 

     mLocation = Location; 

     mDate = Date; 

    } 

    public String getMagnitude() 
    { 

     return mMagnitude; 
    } 

    public String getLocation() 
    { 

     return mLocation; 
    } 

    public String getDate() 
    { 

     return mDate; 
    } 




} 

E artquakeAdapter.java

package com.example.android.quakereport; 

import android.content.Context; 
import android.support.annotation.NonNull; 
import android.support.v7.view.menu.ListMenuItemView; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.LinearLayout; 
import android.widget.TextView; 

import java.util.List; 

/** 
* Created by raghavendra on 3/7/2017. 
*/ 

public class EarthquakeAdapter extends ArrayAdapter<Earthquake> { 

    public EarthquakeAdapter(Context context, List<Earthquake> earthquakes) { 
     super(context, 0, earthquakes); 
    } 


    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     // Check if the existing view is being reused, otherwise inflate the view 
     View listItemView = convertView; 
     if (listItemView == null) { 
      listItemView = LayoutInflater.from(getContext()).inflate(
        R.layout.earthquake_activity, parent, false); 
     } 

     Earthquake currentEarthquake = getItem(position); 



     TextView magnitudeView = (TextView) listItemView.findViewById(R.id.magnitude); 

     magnitudeView.setText(currentEarthquake.getMagnitude()); 

     TextView locationView = (TextView) listItemView.findViewById(R.id.location); 

     locationView.setText(currentEarthquake.getLocation()); 

     TextView dateView = (TextView) listItemView.findViewById(R.id.date); 

     dateView.setText(currentEarthquake.getDate()); 






return listItemView; 



    } 

} 








    [1]: https://github.com/udacity/ud843-QuakeReport 
+0

plz jemand herausfinden, das Problem. –

+3

Bitte Fehlerprotokoll posten –

+1

Es gibt keine getMagnitude in dem Code, den Sie hochgeladen haben. Es ist nur der Ausgangspunkt des Kurses. Bitte drücken Sie Ihre Änderungen. –

Antwort

0

denke ich, ist das Problem mit Ihrem Earthquake.java

Versuchen;

public class Earthquake { 


    private String mMagnitude; 

    private String mLocation; 

    private String mDate; 


    public Earthquake(String Magnitude, String Location, String Date) 
    { 
     this.mMagnitude = Magnitude; 

     this.mLocation = Location; 

     this.mDate = Date; 

    } 

    public String getMagnitude() 
    { 

     return mMagnitude; 
    } 

    public String getLocation() 
    { 

     return mLocation; 
    } 

    public String getDate() 
    { 

     return mDate; 
    } 
} 
0

Ihre Earthquake-Klasse hat keinen Standardkonstruktor. Deshalb ist die mMagnitude null sein könnte, sollten Sie es auf

private String mMagnitude = ""; 

gesetzt oder einen Standardkonstruktor für die Erdbeben Klasse hinzufügen:

public Earthquake() { 
    mMagnitude = ""; 
    ... 
} 
Verwandte Themen