2016-07-14 3 views
-4

Я пытаюсь запустить приложение, и он выходит из строя из-за этой ошибки:Решение java.lang.NumberFormatException: Invalid дважды: «» ошибка

FATAL EXCEPTION: main    
       Process: com.panaceasoft.citiesdirectory, PID: 4201 
       com.google.gson.JsonSyntaxException: java.lang.NumberFormatException: Invalid double: "" 

Это были некоторые ошибки Gradle, но я решил их , и теперь он все еще разбился, когда я пытался запустить приложение. Я даже не знаю, что это вызвано MainActivity. Где я должен искать эту ошибку и что улучшить? Заранее спасибо !

MainActivity:

/** 
* Created by Panacea-Soft on 7/15/15. 
* Contact Email : [email protected] 
*/ 

public class MainActivity extends AppCompatActivity { 

    /**------------------------------------------------------------------------------------------------ 
    * Start Block - Private & Public Variables 
    **------------------------------------------------------------------------------------------------*/ 
    private Toolbar toolbar = null; 
    private ActionBarDrawerToggle drawerToggle = null; 
    private DrawerLayout drawerLayout = null; 
    private NavigationView navigationView = null; 
    private int currentMenuId = 0; 
    private FABActions fabActions; 
    private boolean notiFlag; 
    private SharedPreferences pref; 
    private FloatingActionButton fab; 
    private SpannableString appNameString; 
    private SpannableString profileString; 
    private SpannableString registerString; 
    private SpannableString forgotPasswordString; 
    private SpannableString searchKeywordString; 
    private SpannableString favouriteItemString; 

    public Fragment fragment = null; 

    /**------------------------------------------------------------------------------------------------ 
    * End Block - Private & PublicVariables 
    **------------------------------------------------------------------------------------------------*/ 

    /**------------------------------------------------------------------------------------------------ 
    * Start Block - Override Functions 
    **------------------------------------------------------------------------------------------------*/ 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     initUtils(); 

     initUI(); 

     initData(); 

     bindData(); 

    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 

     Utils.psLog("OnActivityResult"); 
     if (requestCode == 1) { 
      if (resultCode == RESULT_OK) { 
       refreshProfileData(); 
      } 
     } 
    } 

    /**------------------------------------------------------------------------------------------------ 
    * End Block - Override Functions 
    **------------------------------------------------------------------------------------------------*/ 

    /**------------------------------------------------------------------------------------------------ 
    * Start Block - Init Utils Class 
    **------------------------------------------------------------------------------------------------*/ 

    private void initUtils() { 
     new Utils(this); 
    } 

    /**------------------------------------------------------------------------------------------------ 
    * End Block - Init Utils Class 
    **------------------------------------------------------------------------------------------------*/ 

    /**------------------------------------------------------------------------------------------------ 
    * Start Block - Init UI Functions 
    **------------------------------------------------------------------------------------------------*/ 

    private void initUI(){ 
     initToolbar(); 
     initDrawerLayout(); 
     initNavigationView(); 
     initFAB(); 
    } 

    private void initToolbar() { 
     toolbar = (Toolbar) findViewById(R.id.toolbar); 
     toolbar.setTitle(""); 
     if (toolbar != null) { 
      setSupportActionBar(toolbar); 
     } 
     if (getSupportActionBar() != null) { 
      getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
     } 
    } 

    private void initDrawerLayout() { 
     drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout); 
     if (drawerLayout != null && toolbar != null) { 
      drawerToggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.drawer_open, R.string.drawer_close) { 
       @Override 
       public void onDrawerOpened(View drawerView) { 
        super.onDrawerOpened(drawerView); 
       } 
       @Override 
       public void onDrawerClosed(View drawerView) { 
        super.onDrawerClosed(drawerView); 
       } 
      }; 

      drawerLayout.setDrawerListener(drawerToggle); 
      drawerLayout.post(new Runnable() { 
       @Override 
       public void run() { 
        drawerToggle.syncState(); 
       } 
      }); 
     } 
    } 

    private void initNavigationView() { 
     navigationView = (NavigationView) findViewById(R.id.nav_view); 

     if (navigationView != null) { 

      navigationView.setNavigationItemSelectedListener(
        new NavigationView.OnNavigationItemSelectedListener() { 
         @Override 
         public boolean onNavigationItemSelected(MenuItem menuItem) { 

          navigationMenuChanged(menuItem); 
          return true; 
         } 
        }); 
     } 
    } 

    private void initFAB() { 
     fab = (FloatingActionButton) findViewById(R.id.fab); 
     fab.bringToFront(); 
     fab.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       fabClicked(view); 
      } 
     }); 
    } 
    /**------------------------------------------------------------------------------------------------ 
    * End Block - Init UI Functions 
    **------------------------------------------------------------------------------------------------*/ 

    /**------------------------------------------------------------------------------------------------ 
    * Start Block - Init Data Functions 
    **------------------------------------------------------------------------------------------------*/ 

    private void initData(){ 
     try { 
      pref = PreferenceManager.getDefaultSharedPreferences(getBaseContext()); 
      notiFlag = getIntent().getBooleanExtra("show_noti", false); 
      Utils.psLog("Notification Flag : " + notiFlag); 
      if (notiFlag) { 
       savePushMessage(getIntent().getStringExtra("msg")); 
       openFragment(R.id.nav_push_noti); 
      } else { 
       openFragment(R.id.nav_home); 
      } 
     }catch(Exception e){ 
      Utils.psErrorLogE("Error in getting notification flag data.", e); 
     } 

     try { 
      appNameString = Utils.getSpannableString(getString(R.string.app_name)); 
      profileString = Utils.getSpannableString(getString(R.string.profile)); 
      registerString = Utils.getSpannableString(getString(R.string.register)); 
      forgotPasswordString = Utils.getSpannableString(getString(R.string.forgot_password)); 
      searchKeywordString = Utils.getSpannableString(getString(R.string.search_keyword)); 
      favouriteItemString = Utils.getSpannableString(getString(R.string.favourite_item)); 

     }catch(Exception e){ 
      Utils.psErrorLogE("Error in init Data.", e); 
     } 

    } 
    /**------------------------------------------------------------------------------------------------ 
    * End Block - Init Data Functions 
    **------------------------------------------------------------------------------------------------*/ 

    /**------------------------------------------------------------------------------------------------ 
    * Start Block - Bind Data Functions 
    **------------------------------------------------------------------------------------------------*/ 

    private void bindData() { 

     toolbar.setTitle(appNameString); 

     bindMenu(); 

    } 

    // This function will change the menu based on the user is logged in or not. 
    public void bindMenu() { 
     if (pref.getInt("_login_user_id", 0) != 0) { 
      navigationView.getMenu().setGroupVisible(R.id.group_after_login, true); 
      navigationView.getMenu().setGroupVisible(R.id.group_before_login, false); 
     } else { 
      navigationView.getMenu().setGroupVisible(R.id.group_before_login, true); 
      navigationView.getMenu().setGroupVisible(R.id.group_after_login, false); 
     } 
    } 

    /**------------------------------------------------------------------------------------------------ 
    * End Block - Bind Data Functions 
    **------------------------------------------------------------------------------------------------*/ 

    /**------------------------------------------------------------------------------------------------ 
    * Start Block - Private Functions 
    **------------------------------------------------------------------------------------------------*/ 

    private void disableFAB() { 
     fab.setVisibility(View.GONE); 
    } 

    private void enableFAB() { 
     fab.setVisibility(View.VISIBLE); 
    } 

    private void updateFABIcon(int icon) { 
     fab.setImageResource(icon); 
    } 

    private void updateFABAction(FABActions action) { 
     fabActions = action; 
    } 

    private void navigationMenuChanged(MenuItem menuItem) { 
     openFragment(menuItem.getItemId()); 
     menuItem.setChecked(true); 
     drawerLayout.closeDrawers(); 
    } 

    private void updateFragment(Fragment fragment) { 
     FragmentManager fm = getSupportFragmentManager(); 
     FragmentTransaction transaction = fm.beginTransaction(); 
     transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN); 
     transaction.replace(R.id.content_frame, fragment); 
     transaction.commit(); 
    } 

    private void doLogout() { 
     pref.edit().remove("_login_user_id").commit(); 
     pref.edit().remove("_login_user_name").commit(); 
     pref.edit().remove("_login_user_email").commit(); 
     pref.edit().remove("_login_user_about_me").commit(); 
     pref.edit().remove("_login_user_photo").commit(); 

     bindMenu(); 

     openFragment(R.id.nav_home); 
    } 

    /**------------------------------------------------------------------------------------------------ 
    * End Block - Private Functions 
    **------------------------------------------------------------------------------------------------*/ 

    /**------------------------------------------------------------------------------------------------ 
    * Start Block - Public Functions 
    **------------------------------------------------------------------------------------------------*/ 

    public void fabClicked(View view) { 
     if (fabActions == FABActions.PROFILE) { 
      final Intent intent; 
      intent = new Intent(this, EditProfileActivity.class); 
      startActivityForResult(intent, 1); 
     } 
    } 

    public void openFragment(int menuId) { 

     switch (menuId) { 
      case R.id.nav_home: 
      case R.id.nav_home_login: 
       disableFAB(); 
       fragment = new CitiesListFragment(); 
       toolbar.setTitle(appNameString); 
       break; 

      case R.id.nav_profile: 
      case R.id.nav_profile_login: 
       if (pref.getInt("_login_user_id", 0) != 0) { 
        enableFAB(); 
        updateFABIcon(R.drawable.ic_edit_white); 
        updateFABAction(FABActions.PROFILE); 
        fragment = new ProfileFragment(); 
       } else { 
        fragment = new UserLoginFragment(); 
       } 
       toolbar.setTitle(profileString); 
       break; 

      case R.id.nav_register: 
       fragment = new UserRegisterFragment(); 
       toolbar.setTitle(registerString); 
       break; 

      case R.id.nav_forgot: 
       fragment = new UserForgotPasswordFragment(); 
       toolbar.setTitle(forgotPasswordString); 
       break; 

      case R.id.nav_logout: 
       doLogout(); 
       break; 

      case R.id.nav_search_keyword: 
      case R.id.nav_search_keyword_login: 
       disableFAB(); 
       fragment = new SearchFragment(); 
       toolbar.setTitle(searchKeywordString); 
       break; 

      case R.id.nav_push_noti: 
      case R.id.nav_push_noti_login: 
       disableFAB(); 
       fragment = new NotificationFragment(); 
       //toolbar.setTitle(Utils.getSpannableString(getString(R.string.push_noti_setting))); 
       break; 

      case R.id.nav_favourite_item_login: 
       disableFAB(); 
       fragment = new FavouritesListFragment(); 
       toolbar.setTitle(favouriteItemString); 
       break; 

      default: 
       break; 
     } 

     if (currentMenuId != menuId && menuId != R.id.nav_logout) { 
      currentMenuId = menuId; 

      updateFragment(fragment); 

      try { 
       navigationView.getMenu().findItem(menuId).setChecked(true); 
      } catch (Exception e) { 
      } 
     } 


    } 

    // Neet to check 
    public void refreshProfileData() { 

     if (fragment instanceof ProfileFragment) { 
      ((ProfileFragment) fragment).bindData(); 
     } 
    } 

    public void refreshProfile(){ 
     openFragment(R.id.nav_profile_login); 
    } 

    public void refreshNotification(){ 
     try { 
      fragment = new NotificationFragment(); 

      updateFragment(fragment); 
      if (pref.getInt("_login_user_id", 0) != 0) { 
       currentMenuId = R.id.nav_push_noti_login; 
      }else{ 
       currentMenuId = R.id.nav_push_noti; 
      } 

      navigationView.getMenu().findItem(currentMenuId).setChecked(true); 
     } catch (Exception e) { 
      Utils.psErrorLogE("Refresh Notification View Error. " , e); 
     } 

    } 

    public void savePushMessage(String msg) { 
     SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 
     SharedPreferences.Editor editor = prefs.edit(); 
     editor.putString("_push_noti_message", msg); 
     editor.commit(); 
    } 

    public void loadProfileImage(String path) { 

     if(!path.toString().equals("")){ 

      final String fileName = path; 
      Utils.psLog("file name : " + fileName); 

      Target target = new Target() { 

       @Override 
       public void onPrepareLoad(Drawable arg0) { 
        Utils.psLog("Prepare Image to load."); 
        return; 
       } 

       @Override 
       public void onBitmapLoaded(final Bitmap bitmap, Picasso.LoadedFrom from) { 
        Utils.psLog("inside onBitmapLoaded "); 

        try { 
         File file; 

         file = new File(Environment.getExternalStorageDirectory() + "/" + fileName); 

         file.createNewFile(); 
         FileOutputStream ostream = new FileOutputStream(file); 
         bitmap.compress(Bitmap.CompressFormat.JPEG, 80, ostream); 
         ostream.close(); 
         Utils.psLog("Success Image Loaded."); 

         refreshProfile(); 

        } catch (Exception e) { 
         Utils.psErrorLogE(e.getMessage(), e); 
        } 

       } 

       @Override 
       public void onBitmapFailed(Drawable arg0) { 
        Utils.psLog("Fail Fail Fail"); 
        return; 
       } 
      }; 

      Utils.psLog("profile photo : " + Config.APP_IMAGES_URL + path); 
      Picasso.with(this) 
        //.load("http://www.cindyomidi.net/wp-content/uploads/2015/03/Fine-art1.jpg") 
        .load(Config.APP_IMAGES_URL + path) 
        .resize(150,150) 
        .into(target); 
     } 

    } 
    /**------------------------------------------------------------------------------------------------ 
    * End Block - Public Functions 
    **------------------------------------------------------------------------------------------------*/ 

    /**------------------------------------------------------------------------------------------------ 
    * Start Block - Enum 
    **------------------------------------------------------------------------------------------------*/ 
    private enum FABActions { 
     PROFILE 
    } 
    /**------------------------------------------------------------------------------------------------ 
    * End Block - Enum 
    **------------------------------------------------------------------------------------------------*/ 

} 

метод onResponse:

public void onResponse(JSONObject response) { 
         try { 
          String status = response.getString("status"); 
          if (status.equals(jsonStatusSuccessString)) { 
           progressWheel.setVisibility(View.GONE); 
           Gson gson = new Gson(); 
           Type listType = new TypeToken<List<PCityData>>() { 
           }.getType(); 

           pCityDataList = gson.fromJson(response.getString("data"), listType); 

           Utils.psLog("City Count : " + pCityDataList.size()); 
           if(pCityDataList.size() > 1) { 
            singleLayout.setVisibility(View.GONE); 
            mRecyclerView.setVisibility(View.VISIBLE); 
            updateDisplay(); 
           }else{ 
            mRecyclerView.setVisibility(View.GONE); 
            singleLayout.setVisibility(View.VISIBLE); 
            stopLoading(); 
            updateSingleDisplay(); 
           } 

           updateGlobalCityList(); 

          } else { 
           stopLoading(); 
           Utils.psLog("Error in loading CityList."); 
          } 
         } catch (JSONException e) { 
          Utils.psErrorLogE("Error in loading CityList.", e); 
          stopLoading(); 
          e.printStackTrace(); 
         } 
        } 

Line 252:

pCityDataList = gson.fromJson(response.getString("data"), listType); 

Линия 241:

new Response.Listener<JSONObject>() { 
+0

Эта ошибка дает номер строки? если это так, вы можете выделить его в своем посте? Эта ошибка является причиной где-то, где литье пустой строки в double. –

+0

Поделитесь всей трассировкой стека .. – W0rmH0le

+0

Нет. Это досадный факт, это не дает номер строки. – Ezekiel

ответ

0

Вы пытаетесь установить double в "". Наверное, вы только что наблюдали за этим.

Именно здесь

at com.panaceasoft.citiesdirectory.fragments.CitiesListFragment$5.onResponse(CitiesListFragment.java:252) 
at com.panaceasoft.citiesdirectory.fragments.CitiesListFragment$5.onResponse(CitiesListFragment.java:241) 

в вашем CitiesListFragment.onResponse(). Однако я не могу сказать ничего более, потому что вы не указали этот код в своем вопросе.

+0

Спасибо за ответ. Нашли строки и отредактировали первый пост с помощью целого метода! – Ezekiel

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