2016-07-19 8 views
-1

Diese Frage wird hier oft gestellt, ich habe alle Antworten versucht, aber keiner von ihnen hat funktioniert. Ich erhalte diesen Fehler: Fehler beim Aufblasen des Klassenfragments. Mapsactivity:Fehler beim Auffüllen des Klassenfragments mit supportMapFragment und fragmentactivity

package com.example.gio.autostop; 

import android.Manifest; 
import android.content.Context; 
import android.content.DialogInterface; 
import android.content.Intent; 
import android.content.pm.PackageManager; 
import android.location.Geocoder; 
import android.location.Location; 

import com.android.volley.RequestQueue; 
import com.android.volley.Response; 
import com.android.volley.toolbox.Volley; 
import com.google.android.gms.location.LocationListener; 

import android.location.LocationManager; 
import android.os.Build; 
import android.provider.Settings; 
import android.support.v4.app.ActivityCompat; 
import android.support.v4.app.FragmentActivity; 
import android.os.Bundle; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.content.ContextCompat; 
import android.support.v7.app.AlertDialog; 
import android.util.Log; 
import android.view.View; 
import android.widget.Button; 
import android.widget.Toast; 

import com.google.android.gms.common.ConnectionResult; 
import com.google.android.gms.common.api.GoogleApiClient; 
import com.google.android.gms.location.LocationRequest; 
import com.google.android.gms.location.LocationServices; 
import com.google.android.gms.maps.GoogleMap; 
import com.google.android.gms.maps.SupportMapFragment; 
import com.google.android.gms.maps.OnMapReadyCallback; 
import com.google.android.gms.maps.model.LatLng; 
import com.google.android.gms.maps.model.Marker; 
import com.google.android.gms.maps.model.MarkerOptions; 

import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 

import java.net.NetworkInterface; 
import java.text.DateFormat; 
import java.util.ArrayList; 
import java.util.Collections; 
import java.util.Date; 
import java.util.List; 


public class MapsActivity extends FragmentActivity implements LocationListener, 
     GoogleApiClient.OnConnectionFailedListener, OnMapReadyCallback, GoogleMap.OnMyLocationButtonClickListener, 
     GoogleApiClient.ConnectionCallbacks { 


    public int permissionRequestCounter; 
    public GoogleApiClient mGoogleApiClient; 
    public Boolean startedLocationUpdate; 
    public LocationRequest locationRequest; 
    public Location mCurrentLocation; 
    public LocationManager mLocationManager; 
    public final static int MILISECONDS_PER_SECOND = 1000; 
    public final static int REQUEST_FINE_LOCATION = 0; 
    public final static int MINUTE = 60 * MILISECONDS_PER_SECOND; 
    protected String mLastUpdateTime; 
    protected final static String REQUESTING_LOCATION_UPDATES_KEY = "requesting-location-updates-key"; 
    protected final static String LOCATION_KEY = "location-key"; 
    protected static final String ADDRESS_REQUESTED_KEY = "address-request-pending"; 
    protected static final String LOCATION_ADDRESS_KEY = "location-address"; 
    protected static final String TAG = "main-activity"; 
    public address_fragment address_fragment; 


    private GoogleMap mMap;// Might be null if Google Play services APK is not available. 

    private Button checkInButton,checkOutButton; 
    private ArrayList<Marker> markerCollection = new ArrayList<>(); 
    private Marker markerForDeletion; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_maps); 
     setUpMapIfNeeded(); 
     checkInButton = (Button) findViewById(R.id.button2); 
     checkOutButton=(Button)findViewById(R.id.button3); 
     SupportMapFragment mapFragment = 
       (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map); 
     mapFragment.getMapAsync(this); 
     address_fragment address_fragment=(address_fragment)getSupportFragmentManager().findFragmentById(R.id.address_fragment); 
     address_fragment.setMapsActivity(this); 
     startedLocationUpdate = false; 
     permissionRequestCounter = 0; 
     mGoogleApiClient = new GoogleApiClient.Builder(this) 
       .addConnectionCallbacks(this) 
       .addOnConnectionFailedListener(this) 
       .addApi(LocationServices.API) 
       .build(); 
     locationRequest = new LocationRequest(); 
     locationRequest.setInterval(MINUTE); 
     locationRequest.setFastestInterval(15 * MILISECONDS_PER_SECOND); 
     locationRequest.setPriority(com.google.android.gms.location.LocationRequest.PRIORITY_HIGH_ACCURACY); 
     if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) 
       == PackageManager.PERMISSION_GRANTED) { 
      checkGps(); 
     } 

     deviceUniqueNumber(); 
     updateValuesFromBundle(savedInstanceState); 
     checkInButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       checkInCurrentPosition(); 
       checkInButton.setClickable(false); 
       checkOutButton.setClickable(true); 
      } 
     }); 
     checkOutButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       deletePosition(); 
       markerForDeletion.remove(); 
       checkOutButton.setClickable(false); 
       checkInButton.setClickable(true); 
      } 
     }); 
     checkOutButton.setClickable(false); 
    } 

    @Override 
    public void onConnectionFailed(ConnectionResult connectionResult) { 
     Log.i(TAG, "Connection failed: ConnectionResult.getErrorCode() = " + connectionResult.getErrorCode()); 
    } 

    @Override 
    protected void onStart() { 
     super.onStart(); 
     mGoogleApiClient.connect(); 
    } 

    @Override 
    protected void onResume() { 
     super.onResume(); 
     setUpMapIfNeeded(); 
     if (mGoogleApiClient.isConnected() && !startedLocationUpdate) 
      startLocationUpdates(); 
    } 


    @Override 
    public void onConnected(Bundle bundle) { 
     if (!startedLocationUpdate) 
      startLocationUpdates(); 
     if (mCurrentLocation != null) { 

      if (!Geocoder.isPresent()) { 
       Toast.makeText(this, R.string.no_geocoder_available, Toast.LENGTH_SHORT).show(); 
       return; 
      } 
      address_fragment gettingAddressFragment=(address_fragment)getSupportFragmentManager().findFragmentById(R.id.map); 
      if (gettingAddressFragment.mAddressRequested) { 
       gettingAddressFragment.startIntentService(); 
      } 
     } 
    } 

    @Override 
    public void onConnectionSuspended(int i) { 
     mGoogleApiClient.connect(); 
    } 

    @Override 
    protected void onStop() { 
     super.onStop(); 
     mGoogleApiClient.disconnect(); 
    } 

    private void setUpMapIfNeeded() { 
     // Do a null check to confirm that we have not already instantiated the map. 
     if (mMap == null) { 
      // Try to obtain the map from the SupportMapFragment. 
      mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)) 
        .getMap(); 
      // Check if we were successful in obtaining the map. 
      if (mMap != null) { 
       setUpMap(); 
      } 
     } 
    } 

    protected void stopLocationUpdates() { 
     LocationServices.FusedLocationApi.removeLocationUpdates(mGoogleApiClient, this); 
     startedLocationUpdate = false; 
    } 

    @Override 
    protected void onPause() { 
     super.onPause(); 
     if (mGoogleApiClient.isConnected() && startedLocationUpdate) 
      stopLocationUpdates(); 

    } 


    private void startLocationUpdates() { 
     if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) { 
      if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) 
        == PackageManager.PERMISSION_GRANTED) { 
       LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, locationRequest, MapsActivity.this); 
       startedLocationUpdate = true; 
      } else { 
       if (permissionRequestCounter == 0) { 
        requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_FINE_LOCATION); 
        permissionRequestCounter++; 
       } 
      } 
     } 

    } 

    @Override 
    public void onMapReady(GoogleMap googleMap) { 
     mMap = googleMap; 
     mMap.setOnMyLocationButtonClickListener(this); 
     enableMyLocation(); 

    } 

    public void enableMyLocation() { 
     if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) { 
      if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) 
        != PackageManager.PERMISSION_GRANTED) { 
       // Permission to access the location is missing. 
       if (permissionRequestCounter == 0) { 
        requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_FINE_LOCATION); 
        permissionRequestCounter++; 
       } 
      } else if (mMap != null) { 
       // Access to the location has been granted to the app. 
       mMap.setMyLocationEnabled(true); 
      } 

     } 
    } 

    @Override 
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { 

     switch (requestCode) { 
      case REQUEST_FINE_LOCATION: { 
       if (grantResults.length == 1 
         && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
        enableMyLocation(); 
        checkGps(); 

       } else { 
        Toast.makeText(MapsActivity.this, "Permission was blocked", Toast.LENGTH_SHORT).show(); 
       } 
      } 
     } 

    } 

    @Override 
    public boolean onMyLocationButtonClick() { 
     checkGps(); 
     return false; 
    } 

    public void checkGps() { 
     final LocationManager manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
     if (!manager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { 
      buildAlertMessageNoGps(); 
     } 
    } 

    @Override 
    public void onLocationChanged(Location location) { 
     mCurrentLocation = location; 
     mLastUpdateTime = DateFormat.getTimeInstance().format(new Date()); 
     address_fragment.fetchAddressHandler(); 
    } 

    private void setUpMap() { 
     Response.Listener<String> responseListener = new Response.Listener<String>() { 

      @Override 
      public void onResponse(String s) { 
       try { 
        JSONObject jsonResponse = new JSONObject(s); 
        boolean success = jsonResponse.getBoolean("success"); 
        if (success) { 
         JSONArray jsonArray = jsonResponse.getJSONArray("data"); 
         JSONObject jsonObject; 
         for (int i = 0; i < jsonArray.length(); i++) { 
          jsonObject = jsonArray.getJSONObject(i); 
          String mac = jsonObject.getString("mac"); 
          String android_id = jsonObject.getString("android_id"); 
          Double latitude = jsonObject.getDouble("latitude"); 
          Double longitude = jsonObject.getDouble("longitude"); 
          if (!isMarkerOnArray(markerCollection, latitude, longitude)) 
           markerCollection.add(mMap.addMarker(new MarkerOptions().position(new LatLng(latitude, longitude)))); 
         } 

        } else { 
         AlertDialog.Builder builder = new AlertDialog.Builder(MapsActivity.this); 
         builder.setMessage("Downloading position failed") 
           .setNegativeButton("retry", null) 
           .create() 
           .show(); 
        } 
       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 
      } 
     }; 
     DownloadPosition downloadPosition = new DownloadPosition(responseListener); 
     RequestQueue queue = Volley.newRequestQueue(MapsActivity.this); 
     queue.add(downloadPosition); 


    } 

    private boolean isMarkerOnArray(ArrayList<Marker> array, Double Latitude, Double Longitude) { 
     Marker current; 
     for (int c = 0; c < array.size(); c++) { 
      current = array.get(c); 
      if ((current.getPosition().latitude == Latitude) && (current.getPosition().longitude == Longitude)) 
       return true; 
     } 
     return false; 
    } 

    private void buildAlertMessageNoGps() { 
     final AlertDialog.Builder builder = new AlertDialog.Builder(this); 
     builder.setMessage("Your GPS seems to be disabled, do you want to enable it?") 
       .setCancelable(false) 
       .setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
        public void onClick(@SuppressWarnings("unused") final DialogInterface dialog, @SuppressWarnings("unused") final int id) { 
         startActivity(new Intent(android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS)); 
        } 
       }) 
       .setNegativeButton("No", new DialogInterface.OnClickListener() { 
        public void onClick(final DialogInterface dialog, @SuppressWarnings("unused") final int id) { 
         dialog.cancel(); 
        } 
       }); 
     final AlertDialog alert = builder.create(); 
     alert.show(); 
    } 

    @Override 
    public void onSaveInstanceState(Bundle savedInstanceState) { 
     savedInstanceState.putBoolean(REQUESTING_LOCATION_UPDATES_KEY, startedLocationUpdate); 
     savedInstanceState.putParcelable(LOCATION_KEY, mCurrentLocation); 
     savedInstanceState.putBoolean(ADDRESS_REQUESTED_KEY, address_fragment.mAddressRequested); 
     savedInstanceState.putString(LOCATION_ADDRESS_KEY, address_fragment.mAddressOutput); 
     super.onSaveInstanceState(savedInstanceState); 
    } 

    private void updateValuesFromBundle(Bundle savedInstanceState) { 
     if (savedInstanceState != null) { 
      if (savedInstanceState.keySet().contains(REQUESTING_LOCATION_UPDATES_KEY)) 
       startedLocationUpdate = savedInstanceState.getBoolean(REQUESTING_LOCATION_UPDATES_KEY); 
      if (savedInstanceState.keySet().contains(LOCATION_KEY)) 
       mCurrentLocation = savedInstanceState.getParcelable(LOCATION_KEY); 
      if (savedInstanceState.keySet().contains(ADDRESS_REQUESTED_KEY)) { 
       address_fragment.mAddressRequested = savedInstanceState.getBoolean(ADDRESS_REQUESTED_KEY); 
      } 
      if (savedInstanceState.keySet().contains(LOCATION_ADDRESS_KEY)) { 
       address_fragment.mAddressOutput = savedInstanceState.getString(LOCATION_ADDRESS_KEY); 
       address_fragment.displayAddressOutput(); 
      } 

     } 

    } 






    public void checkInCurrentPosition() { 
     if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 
      return; 
     } 
     mLocationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE); 
     Location locationGPS = mLocationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); 
     Location locationNet = mLocationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); 
     Location location; 
     long GPSLocationTime = 0; 
     if (null != locationGPS) { GPSLocationTime = locationGPS.getTime(); } 

     long NetLocationTime = 0; 

     if (null != locationNet) { 
      NetLocationTime = locationNet.getTime(); 
     } 

     if (0 < GPSLocationTime - NetLocationTime) { 
      location=locationGPS; 
     } 
     else { 
      location=locationNet; 
     } 
     LatLng newLatLng = new LatLng(location.getLatitude(), location.getLongitude()); 
     markerForDeletion=mMap.addMarker(new MarkerOptions().position(newLatLng).title(newLatLng.toString())); 
     String deviceId = Settings.Secure.getString(this.getContentResolver(), Settings.Secure.ANDROID_ID); 
     Positions position=new Positions(newLatLng.latitude,newLatLng.longitude,getWifiMacAddress(),deviceId); 
     Response.Listener<String> responseListener= new Response.Listener<String>() { 
      @Override 
      public void onResponse(String s) { 
       try { 
        JSONObject jsonResponse= new JSONObject(s); 
        boolean success=jsonResponse.getBoolean("success"); 
        if(!success){ 
         AlertDialog.Builder builder=new AlertDialog.Builder(MapsActivity.this); 
         builder.setMessage("uploading position failed") 
         .setNegativeButton("retry",null) 
         .create() 
         .show(); 
         } 
       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 

      } 
     }; 
     UploadPosition upload=new UploadPosition(position,responseListener); 
     RequestQueue queue= Volley.newRequestQueue(MapsActivity.this); 
     queue.add(upload); 

    } 
    public void deletePosition(){ 
     String deviceId = Settings.Secure.getString(this.getContentResolver(), Settings.Secure.ANDROID_ID); 
     String mac=getWifiMacAddress(); 
     Response.Listener<String> responseListener = new Response.Listener<String>(){ 
      @Override 
      public void onResponse(String s) { 
       try { 
        JSONObject jsonResponse= new JSONObject(s); 
        boolean success=jsonResponse.getBoolean("success"); 
        if(!success){ 
         AlertDialog.Builder builder=new AlertDialog.Builder(MapsActivity.this); 
         builder.setMessage("uploading position failed") 
           .setNegativeButton("retry",null) 
           .create() 
           .show(); 
        } 
       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 
      } 
     }; 
     DeletePosition delete=new DeletePosition(mac,deviceId,responseListener); 
     RequestQueue queue=Volley.newRequestQueue(MapsActivity.this); 
     queue.add(delete); 
    } 


    public void deviceUniqueNumber(){ 
     String deviceId = Settings.Secure.getString(this.getContentResolver(), Settings.Secure.ANDROID_ID); 

     Toast.makeText(this,deviceId+" "+getWifiMacAddress(),Toast.LENGTH_SHORT).show(); 
    } 
     public static String getWifiMacAddress() { 
     try { 
      String interfaceName = "wlan0"; 
      List<NetworkInterface> interfaces = Collections.list(NetworkInterface.getNetworkInterfaces()); 
      for (NetworkInterface intf : interfaces) { 
       if (!intf.getName().equalsIgnoreCase(interfaceName)){ 
        continue; 
       } 
       byte[] mac = intf.getHardwareAddress(); 
       if (mac==null){ 
        return ""; 
       } 

       StringBuilder buf = new StringBuilder(); 
       for (byte aMac : mac) { 
        buf.append(String.format("%02X:", aMac)); 
       } 
       if (buf.length()>0) { 
        buf.deleteCharAt(buf.length() - 1); 
       } 
       return buf.toString(); 
      } 
     } catch (Exception ex) { 
      Log.i("getWifiMacAddress","exception in getWifiMacAddress"); 
     } 
     return ""; 
    } 

} 

activity_maps.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_height="wrap_content" 
    android:layout_width="match_parent" 
    android:orientation="horizontal"> 

<fragment class="com.example.gio.autostop.address_fragment" 
    android:id="@+id/address_fragment" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    /> 
<fragment 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" android:id="@+id/map" 
    tools:context="com.example.gio.autostop.MapsActivity" 
    class="com.google.android.gms.maps.SupportMapFragment" 
    > 
    <include layout="@layout/map_interface"/> 
    </fragment> 
</LinearLayout> 

address_fragment.java:

package com.example.gio.autostop; 

import android.content.Intent; 
import android.os.Bundle; 
import android.os.Handler; 
import android.os.ResultReceiver; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ProgressBar; 
import android.widget.TextView; 


public class address_fragment extends Fragment { 
    protected TextView mLocationAddressTextView; 
    protected String mAddressOutput; 
    private AddressResultReceiver mResultReceiver; 
    private ProgressBar mProgressBar; 
    protected boolean mAddressRequested; 
    private MapsActivity mapsActivity; 
    public address_fragment() { 
     // Required empty public constructor 
    } 

    class AddressResultReceiver extends ResultReceiver{ 
     private int CREATOR; 
     public AddressResultReceiver(Handler handler) { 
      super(handler); 
     } 

     @Override 
     protected void onReceiveResult(int resultCode, Bundle resultData) { 
      mAddressOutput = resultData.getString(Constants.RESULT_DATA_KEY); 
      mAddressRequested = false; 
      updateUIWidgets(); 
      super.onReceiveResult(resultCode, resultData); 
     } 
    } 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 

     // Inflate the layout for this fragment 
     return inflater.inflate(R.layout.fragment_address_fragment, container, false); 
    } 
    public void setMapsActivity(MapsActivity mapsActivity){ 
     this.mapsActivity=mapsActivity; 

    } 

    @Override 
    public void onSaveInstanceState(Bundle outState) { 
     outState.putString("mAddressOutput",mAddressOutput); 
     outState.putBoolean("mAddressRequested",mAddressRequested); 

    } 

    @Override 
    public void onStart() { 
     super.onStart(); 
     View view = getView(); 
     if(view!=null){ 
      mProgressBar = (ProgressBar) view.findViewById(R.id.progress_bar); 
      mLocationAddressTextView=(TextView) view.findViewById(R.id.address); 
      displayAddressOutput(); 
     } 
    } 
    public void displayAddressOutput(){ 
    mLocationAddressTextView.setText(mAddressOutput); 
} 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     mResultReceiver = new AddressResultReceiver(new Handler()); 
     mAddressRequested = false; 
     mAddressOutput = " "; 
     updateUIWidgets(); 
    } 
    public void startIntentService() { 
     Intent intent = new Intent(getContext(), FetchAddressIntentService.class); 
     intent.putExtra(Constants.RECEIVER, mResultReceiver); 
     intent.putExtra(Constants.LOCATION_DATA_EXTRA, mapsActivity.mCurrentLocation); 
     mapsActivity.startService(intent); 

    } 
    public void fetchAddressHandler() { 
     if (mapsActivity.mGoogleApiClient.isConnected() && mapsActivity.mCurrentLocation != null) { 
      startIntentService(); 
     } 
     mAddressRequested = true; 
     updateUIWidgets(); 
    } 


    private void updateUIWidgets() { 

     if (mAddressRequested) { 
      mProgressBar.setVisibility(ProgressBar.VISIBLE); 
     } else { 
      mProgressBar.setVisibility(ProgressBar.GONE); 
     } 
    } 
} 

fragment_address_fragment:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.example.gio.autostop.address_fragment" 
    android:background="@android:color/transparent"> 
    <TextView 
     android:id="@+id/address" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:gravity="center_horizontal" 
     android:text="" 
     android:layout_centerHorizontal="true" 
     android:textSize="22sp"/> 
</FrameLayout> 

map_interface.xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

     <Button 
      android:id="@+id/button2" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="@string/check_in" 
      android:layout_marginTop="@dimen/layout_marginTop_button" 
      android:layout_gravity="end" 
      android:layout_alignParentBottom="true" 
      android:layout_weight="1" 
      /> 
     <Button 
      android:id="@+id/button3" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="@string/check_out" 
      android:layout_marginTop="@dimen/layout_marginTop_button" 
      android:layout_gravity="end" 
      android:layout_weight="1" 
      /> 
    <ProgressBar 
     android:id="@+id/progress_bar" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerInParent="true" /> 
</LinearLayout> 

was verursacht Fehler? Update: vollständige Projekt: https://github.com/giusha/Autostop

Antwort

0

Vielleicht ist die Nachricht ist irreführend, etwas „Fehler Fragment Aufpumpen“ - aber eine genauere Untersuchung des Fehlers stacktrace zeigt, dass es durch NullPointerException verursacht wird, während mProgressBar (weil Sie mProgressBar.setVisibility fordern) ist eigentlich NULL - weil Sie es view.findViewById(R.id.progress_bar); zugewiesen, die null zurückgibt, weil die Ansicht R.id.progress_bar nicht in der Layout-Datei (fragment_address_fragment) existiert. Also mein Vorschlag wäre, sich zu bewegen sein:

<ProgressBar 
    android:id="@+id/progress_bar" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerInParent="true" /> 

in die fragment_address_fragment Layout-Datei - und führen Sie den Code erneut und sehen, ob es funktioniert.

+0

Es hat nicht funktioniert, die gleichen Fehler erschienen. Stack-Trace: http://pastie.org/10913052 Bitte sehen Sie das vollständige Projekt, wenn Sie sich entscheiden, weitere Forschung zu tun. Ich verband es in der Aktualisierung des ersten Beitrags – giusha9

+0

Aber Ihr Code zeigt nicht, dass Sie die Änderungen vorgenommen haben (Sie haben immer noch keine progress_bar Ansicht im Layout XML Sie versuchen, es durch ID zu finden). Können Sie den Code, in dem Sie 'mProgressBar.setVisibility' aufrufen, auskommentieren und sehen, ob der Fehler verschwindet oder welche Fehler auftreten. – ishmaelMakitla

+0

Ich habe es mit geändertem Code und als vor dem Hochladen auf GitHub ich änderte zurück. Jetzt habe ich Code, wo ich mProgressBar.setVisibility und übertragen progresbar an fragment_address_fragment, und ich denke, erste Fehler ist weg. aber es gibt immer noch einen Fehler: Versuch, virtuelle Methode 'void android.widget.Button.setOnClickListener (android.view.View $ OnClickListener)' auf eine Null-Objekt-Referenz aufrufen – giusha9