2015-03-31 11 views
0

Я запущенной мое приложение, и он показал эту ошибку:конфликт с другим классом

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.wunderlist.slidinglayersample/com.wunderlist.slidinglayersample.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void app.AppController.addToRequestQueue(com.android.volley.Request)' on a null object reference 
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298) 
      at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) 
      at android.app.ActivityThread.access$800(ActivityThread.java:144) 
      at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) 
      at android.os.Handler.dispatchMessage(Handler.java:102) 
      at android.os.Looper.loop(Looper.java:135) 
      at android.app.ActivityThread.main(ActivityThread.java:5221) 
      at java.lang.reflect.Method.invoke(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:372) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 
    Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void app.AppController.addToRequestQueue(com.android.volley.Request)' on a null object reference 
      at com.wunderlist.slidinglayersample.MainActivity.redirect(MainActivity.java:331) 
      at com.wunderlist.slidinglayersample.MainActivity.onCreate(MainActivity.java:110) 
      at android.app.Activity.performCreate(Activity.java:5937) 
      at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) 
      at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251) 
            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) 
            at android.app.ActivityThread.access$800(ActivityThread.java:144) 
            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) 
            at android.os.Handler.dispatchMessage(Handler.java:102) 
            at android.os.Looper.loop(Looper.java:135) 
            at android.app.ActivityThread.main(ActivityThread.java:5221) 
            at java.lang.reflect.Method.invoke(Native Method) 
            at java.lang.reflect.Method.invoke(Method.java:372) 
            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 
            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 

Это все MainActivity:

package com.wunderlist.slidinglayersample; 

import android.annotation.SuppressLint; 
import android.app.Activity; 
import android.app.ProgressDialog; 
import android.content.SharedPreferences; 
import android.graphics.drawable.Drawable; 
import android.os.Build; 
import android.os.Bundle; 
import android.preference.PreferenceManager; 
import android.util.Log; 
import android.view.KeyEvent; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.RelativeLayout.LayoutParams; 
import android.widget.TextView; 
import android.widget.Toast; 

import com.android.volley.Response; 
import com.android.volley.VolleyError; 
import com.android.volley.VolleyLog; 
import com.android.volley.toolbox.JsonArrayRequest; 
import com.google.android.gms.maps.CameraUpdate; 
import com.google.android.gms.maps.CameraUpdateFactory; 
import com.google.android.gms.maps.GoogleMap; 
import com.google.android.gms.maps.MapFragment; 
import com.google.android.gms.maps.model.BitmapDescriptorFactory; 
import com.google.android.gms.maps.model.CameraPosition; 
import com.google.android.gms.maps.model.LatLng; 
import com.google.android.gms.maps.model.MarkerOptions; 
import com.wunderlist.slidinglayer.SlidingLayer; 

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

import app.AppController; 
import util.Content; 

public class MainActivity extends Activity { 


    private GoogleMap googleMap; 

    // json object response url 
    private String urlJsonObj = "http://api.androidhive.info/volley/person_object.json"; 

    // json array response url 
    private String urlJsonArry = "http://heimerdinger.pe.hu/getjson.php"; 
    //https://gist.githubusercontent.com/sanjogshrestha/968f713b4c707f4cfbd4/raw/b2c9fd087ad3d274ac8ae043049a8e98ce975814/Json 

    //http://api.androidhive.info/volley/person_array.json 

    private static String TAG = MainActivity.class.getSimpleName(); 

    // Progress dialog 
    private ProgressDialog pDialog; 

    Content content = new Content(); 
    public static String valueEntered; 


    // temporary string to show the parsed response 
    private String jsonResponse; 

    private SlidingLayer mSlidingLayer; 
    private TextView swipeText; 

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



     googleMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap(); 
     googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL); 
     googleMap.getUiSettings(); 
     googleMap.getUiSettings().setZoomControlsEnabled(true); 


     bindViews(); 
     initState(); 

     redirect(); 


    } 



    @SuppressLint("NewApi") 
    @Override 
    protected void onResume() { 
     super.onResume(); 

     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { 
      getActionBar().setDisplayHomeAsUpEnabled(true); 
     } 
    } 

    /** 
    * View binding 
    */ 
    private void bindViews() { 
     mSlidingLayer = (SlidingLayer) findViewById(R.id.slidingLayer1); 
//  swipeText = (TextView) findViewById(R.id.swipeText); 
    } 

    /** 
    * Initializes the origin state of the layer 
    */ 
    private void initState() { 

     SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); 

     setupSlidingLayerPosition(prefs.getString("layer_location", "right")); 

     setupShadow(prefs.getBoolean("layer_has_shadow", false)); 
     setupLayerOffset(prefs.getBoolean("layer_has_offset", false)); 
     setupPreviewMode(prefs.getBoolean("preview_mode_enabled", false)); 
    } 

    private void setupSlidingLayerPosition(String layerPosition) { 

     LayoutParams rlp = (LayoutParams) mSlidingLayer.getLayoutParams(); 
     int textResource; 
     Drawable d; 

//  if (layerPosition.equals("right")) { 
      textResource = R.string.swipe_right_label; 
      d = getResources().getDrawable(R.drawable.container_rocket_right); 

      mSlidingLayer.setStickTo(SlidingLayer.STICK_TO_RIGHT); 


     d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight()); 
//  swipeText.setCompoundDrawables(null, d, null, null); 
//  swipeText.setText(getResources().getString(textResource)); 
     mSlidingLayer.setLayoutParams(rlp); 
    } 

    private void setupShadow(boolean enabled) { 
     if (enabled) { 
      mSlidingLayer.setShadowSizeRes(R.dimen.shadow_size); 
      mSlidingLayer.setShadowDrawable(R.drawable.sidebar_shadow); 
     } else { 
      mSlidingLayer.setShadowSize(0); 
      mSlidingLayer.setShadowDrawable(null); 
     } 
    } 

    private void setupLayerOffset(boolean enabled) { 
     int offsetDistance = enabled ? getResources().getDimensionPixelOffset(R.dimen.offset_distance) : 0; 
     mSlidingLayer.setOffsetDistance(offsetDistance); 
    } 

    private void setupPreviewMode(boolean enabled) { 
     int previewOffset = enabled ? getResources().getDimensionPixelOffset(R.dimen.preview_offset_distance) : -1; 
     mSlidingLayer.setPreviewOffsetDistance(previewOffset); 
    } 

    public void buttonClicked(View v) { 
     switch (v.getId()) { 
     case R.id.buttonOpen: 
      mSlidingLayer.openLayer(true); 
      break; 
     case R.id.buttonClose: 
      mSlidingLayer.closeLayer(true); 
      break; 
     } 
    } 

    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     switch (keyCode) { 
     case KeyEvent.KEYCODE_BACK: 
      if (mSlidingLayer.isOpened()) { 
       mSlidingLayer.closeLayer(true); 
       return true; 
      } 

     default: 
      return super.onKeyDown(keyCode, event); 
     } 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     finish(); 
     return true; 
    } 







    private void redirect() { 


     //showpDialog(); 

     JsonArrayRequest req = new JsonArrayRequest(urlJsonArry, 
       new Response.Listener<JSONArray>() { 
        @Override 
        public void onResponse(JSONArray response) { 
         Log.d(TAG, response.toString()); 


         try { 
          Content content = new Content(); 
          // Parsing json array response 
          // loop through each json object 
          jsonResponse = ""; 
          for (int i = 0; i < response.length(); i++) { 

           JSONObject person = (JSONObject) response 
             .get(i); 

           String name = person.getString("nosaukums"); 
           String email = person.getString("nosaukums"); 
           String relation = person.getString("nosaukums"); 

           Double lat=person.getDouble("latCo"); 
           Double lng=person.getDouble("longCo"); 


           content.setName(name); 

           content.setPopulation(email); 
           content.setlat(lat); 
           content.setlng(lng); 
           content.setRelation(relation); 
           System.out.println("name="+content.getName()+content.getlat()); 
           LatLng lt = new LatLng(content.getlat(), content.getlng()); 
           content.setLatlng(lt); 
           //valueEntered=lt.toString(); 
           System.out.println("address="+content.getLatlng()); 
             /*String home = latlng.getLong("home"); 
             String mobile = phone.getString("mobile");*/ 
           System.out.println("relation="+content.getRelation()); 

           jsonResponse += "Name: " + name + "\n\n"; 
           jsonResponse += "Population: " + email + "\n\n"; 
           jsonResponse += "Latitude: " + lat + "\n\n"; 
           jsonResponse += "Longitude: " + lng + "\n\n\n"; 
           jsonResponse += "Relation" + relation +"\n\n\n"; 

           if(content.getRelation().equals("son")) 
           { 
            googleMap.addMarker(new MarkerOptions() 
              .position(lt) 
              .icon(BitmapDescriptorFactory.fromResource(R.drawable.marker_son)) 
              .snippet(email) 
              .title(content.getName())).showInfoWindow(); 

           } 
           else 
           { 
            googleMap.addMarker(new MarkerOptions() 
              .position(lt) 
              .icon(BitmapDescriptorFactory.fromResource(R.drawable.marker_daughter)) 

              .title(content.getName())).showInfoWindow(); 

           } 





           CameraPosition cameraPosition = new CameraPosition.Builder().target(lt).zoom(15.0f).build(); 
           CameraUpdate cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition); 
           googleMap.moveCamera(cameraUpdate); 



          } 

          //txtResponse.setText(jsonResponse); 

         } catch (JSONException e) { 
          e.printStackTrace(); 
          Toast.makeText(getApplicationContext(), 
            "Error: " + e.getMessage(), 
            Toast.LENGTH_LONG).show(); 
         } 

         //hidepDialog(); 


        } 
       }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 
       VolleyLog.d(TAG, "Error: " + error.getMessage()); 
       Toast.makeText(getApplicationContext(), 
         error.getMessage(), Toast.LENGTH_SHORT).show(); 
       //hidepDialog(); 
      } 
     }); 

     // Adding request to request queue 
     AppController.getInstance().addToRequestQueue(req); 
    } 

} 

Есть ли у вас какие-либо идеи, как решить эту проблему? Потому что я думаю, что я импортировал все правильно, и в манифесте MainActivity упоминается как MAIN.

EDIT:

кажется, что Manifest тоже нормально:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
       package="com.wunderlist.slidinglayersample" 
       android:versionCode="2" 
       android:versionName="1.5"> 

     <uses-sdk 
      android:minSdkVersion="11" 
      android:targetSdkVersion="21" /> 

     <application 
       android:allowBackup="true" 
       android:icon="@drawable/ic_launcher" 
       android:label="@string/app_name" 
       android:theme="@style/AppTheme"> 

      <activity 
        android:name=".MainActivity" 
        android:label="@string/app_name" 
        android:launchMode="singleTop"> 

       <intent-filter> 
        <action android:name="android.intent.action.MAIN"/> 
        <category android:name="android.intent.category.LAUNCHER"/> 
       </intent-filter> 
      </activity> 
... 

AppController.java:

import android.app.Application; 
import android.text.TextUtils; 

import com.android.volley.Request; 
import com.android.volley.RequestQueue; 
import com.android.volley.toolbox.Volley; 

import util.SslHttpStack; 

//import com.android.volley.RequestQueue; 

public class AppController extends Application { 

    public static final String TAG = AppController.class.getSimpleName(); 

    private RequestQueue mRequestQueue; 

    private static AppController mInstance; 

    @Override 
    public void onCreate() { 
     super.onCreate(); 
     mInstance = this; 
    } 

    public static synchronized AppController getInstance() { 
     return mInstance; 
    } 

    public RequestQueue getRequestQueue() { 
     if (mRequestQueue == null) { 
      mRequestQueue = Volley.newRequestQueue(getApplicationContext(),new SslHttpStack(false)); 
     } 

     return mRequestQueue; 
    } 

    public <T> void addToRequestQueue(Request<T> req, String tag) { 
     req.setTag(TextUtils.isEmpty(tag) ? TAG : tag); 
     getRequestQueue().add(req); 
    } 

    public <T> void addToRequestQueue(Request<T> req) { 
     req.setTag(TAG); 
     getRequestQueue().add(req); 
    } 

    public void cancelPendingRequests(Object tag) { 
     if (mRequestQueue != null) { 
      mRequestQueue.cancelAll(tag); 
     } 
    } 
} 

ответ

1

Это произойдет потому, что

AppController.getInstance() == null 

Потому что вы не инициируете свой класс приложения. Для класса приложения init вам нужно ввести манифест. Просто замените код из манифеста в мой код ниже:

<application 
       android:name="com.wunderlist.slidinglayersample.AppController" 
       android:allowBackup="true" 
       android:icon="@drawable/ic_launcher" 
       android:label="@string/app_name" 
       android:theme="@style/AppTheme"> 
+0

если вас понял, то я должен положить AppController.getInstance() == NULL перед: AppController.getInstance() addToRequestQueue (REQ);. и я сделал это, и он сказал «Не заявление» – AndroidProgrammer

+0

@AndroidProgrammer Пожалуйста, покажите мне класс AppController – smail2133

+0

Обновленный вопрос с AppController – AndroidProgrammer

Смежные вопросы