2014-01-03 3 views
0

Я использую textHeading имени TextView в UploadActivity.java и управления видимостью кнопки в LoginActivity.java но получение Исключение нулевого указателяTextView NullPointerException

Линия NPE:

if(UploadActivity.textHeading.getText().equals("0")) 

UploadActivity.java:-

static TextView textHeading = null ; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState);  

    setContentView(R.layout.activity_upload); 

    textHeading = (TextView) findViewById(R.id.txtEventNameDate); 
    textHeading.setText(CameraLauncherActivity.folder); 

    } 
} 

LoginActivity.java:-

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_login); 

      if(UploadActivity.textHeading.getText().equals("0")) 
      { 
       btnGallery.setVisibility(View.VISIBLE); 
      } 
      else { 
       btnGallery.setVisibility(View.GONE); 
      } 
     } 

ответ

3

Не используйте статические.

Вместо этого используйте намерение и передайте значение LoginActivity.

Если вы хотите сохранить глобальное состояние, вы можете использовать класс Application.

+0

но я просто хочу проверить значение для textHeading, независимо от того, я пошел в UploadActivity или нет. – Sun

+0

@AbrahimNeil, когда вы переходите к 'UploadActivity' ?. Если вы этого не сделаете, textview не инициализируется, и вы получите NPE – Raghunandan

+0

. Сначала я покажу LoginActivity для пользователя, затем UPloadActivity – Sun

0

Прежде всего, это дает вам NullPointerException, потому что вы еще не определили textHeading в любом месте в LoginActivity.

Во-вторых, вы не можете использовать textHeading в LoginActivity потому, что это текстовое изображение представлено в XML-файле, который вы определили для UplaodActivity. Таким образом, вы можете получить только textHeading в UploadActivity. Использование того же экземпляра в другом действии не поможет, потому что, прежде всего, это из файла XML, определенного из другого действия.

Например, если вы

textHeading = (TextView) findViewById(R.id.txtEventNameDate); 

в LoginActivity еще это даст вам NPE. Вам придется передавать данные с помощью намерений.

0

Когда вы начинаете LoginActivity из UploadActivity в этом намерении, добавьте значение textHeading, например intent.putExtra ("textHeading", textHeading.getText(). ToString()); И в UploadActivity's onCreate() получите это значение, а затем из этого значения решите, что вам нужно сделать «btnGallery» Visible или Gone.

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