2015-11-02 1 views
0

Я импортировал репозиторий Telegram. и попытался запустить проект, но получил вышеуказанную ошибку в файле Passcodeview.java. Он показывает ошибку в этом фрагментеОшибка несравнимых типов: Object и int в Telegram

@Override 
protected void onLayout(boolean changed, int left, int top, int right, int bottom) { 
    View rootView = getRootView(); 
    int usableViewHeight = rootView.getHeight() - AndroidUtilities.statusBarHeight - AndroidUtilities.getViewInset(rootView); 
    getWindowVisibleDisplayFrame(rect); 
    keyboardHeight = usableViewHeight - (rect.bottom - rect.top); 

    if (UserConfig.passcodeType == 1 && (AndroidUtilities.isTablet() || getContext().getResources().getConfiguration().orientation != Configuration.ORIENTATION_LANDSCAPE)) { 
     int t = 0; 
     if (passwordFrameLayout.getTag() != 0) { 
      t = (Integer) passwordFrameLayout.getTag(); 
     } 
     LayoutParams layoutParams = (LayoutParams) passwordFrameLayout.getLayoutParams(); 
     layoutParams.topMargin = t + layoutParams.height - keyboardHeight/2 - (Build.VERSION.SDK_INT >= 21 ? AndroidUtilities.statusBarHeight : 0); 
     passwordFrameLayout.setLayoutParams(layoutParams); 
    } 

    super.onLayout(changed, left, top, right, bottom); 
} 

Хотя тот же проект запустить один раз в другую машину правильно, я ничего не изменится.

ответ

0

Я думаю, что ваша вторая машина не удовлетворяет условию

UserConfig.passcodeType == 1 && (AndroidUtilities.isTablet() || getContext().getResources().getConfiguration().orientation != Configuration.ORIENTATION_LANDSCAPE)

Таким образом, не следующие "если" не выполняется там:

if (passwordFrameLayout.getTag() != 0) { 
      t = (Integer) passwordFrameLayout.getTag(); 
     } 

Проблема в том, что вы действительно сравниваете Obje а (тег) на номер 0.

Изменить код

if (passwordFrameLayout.getTag() != null) { 
      t = (Integer) passwordFrameLayout.getTag(); 
     } 

, если вы уверены, что тег всегда будет целым, если не нулевой.

Если вы не уверены в этом, используйте try-catch (NumberFormatException).

1

Проблема находится на линии: if (passwordFrameLayout.getTag() != 0) {

getTag() возвращает объект, который вы не можете сравнить с целочисленной константой. Вместо этого вы должны проверить, что тег не равен нулю. Если вы не уверены, что бирка всегда будет Integer, вероятно, вы должны также проверить с помощью instanceof:

if (passwordFrameLayout.getTag() != null && passwordFrameLayout.getTag() instanceof Integer) { 

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

  • Нет связанных вопросов^_^