2015-02-25 3 views
0

в регистрационной деятельности, я следующие строки:Иногда умысел возвращает нулевое значение

public final static String APPV = "com.impact.pack.APPV"; 

private void startMainActivity() { 
     Intent intent = new Intent(context, MainActivity.class); 
     intent.putExtra(APPVT,getAppVersion(context)); 
     intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); 
     startActivity(intent); 
} 

private static int getAppVersion(Context context) { 
     try { 
      PackageInfo packageInfo = context.getPackageManager() 
        .getPackageInfo(context.getPackageName(), 0); 
      return packageInfo.versionCode; 
     } catch (NameNotFoundException e) { 
      // should never happen 
      throw new RuntimeException("Could not get package name: " + e); 
     } 
    } 

Я зову startMainActivity метод из onCreate в Вход деятельности.

И это моя основным видом деятельности в onCreate метод:

Intent intent = getIntent(); 
APPV=intent.getIntExtra(LoginActivity.APPVT,1); 
Log.w("App version:",""+APPV); 

Мое приложение версия 17 но иногда Log.w пишет 1 для App version .I означает, иногда цель становится нулевой value.but почему? Как я могу это решить?

+0

Вы когда-нибудь сталкиваетесь с исключением во время выполнения? Также есть ли другие действия в проекте или вы только тестируете их? – toidiu

+0

Нет, никогда не получая исключение во время выполнения. – Okan

+0

У меня всего 2 мероприятия. – Okan

ответ

0

Попытка переопределить функцию onNewIntent, как указано в документе для FLAG_ACTIVITY_CLEAR_TOP: http://developer.android.com/reference/android/content/Intent.html

@Override 
protected void onNewIntent(Intent intent) 
{ 
    super.onNewIntent(intent); 
} 

ДАЛЕЕ

Я подозреваю, что это происходит потому, что вместо того, чтобы начать новую деятельность ваш код фактически воскрешая старую активность из стека, и намерение не доставляется должным образом.

Кроме того, поскольку appVersion не изменится, вы можете сохранить его в своих приложениях, а затем просто получить от него доступ. Гораздо надежнее и намного чище, чем прохождение через намерения. :)

+0

Я уже использовал этот метод – Okan

+0

Можете ли вы перенести приложение appVersion в AppPrefs? Это обойти проблему, но также и более эффективную практику в этом случае. – toidiu

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