2013-08-04 2 views
0

При попытке манипулировать полем TextView я продолжал получать ошибки нулевого указателя. Я обнаружил, что мой блок TextView не связан с моим кодом, несмотря на то, что я установил его в правильный ID. Я не знаю, в чем проблема. Я связываю все свои TextViews таким же образом, и это первый раз, когда у меня была эта проблема. Это часть моего XML-файла, который определяет свойства TextView.Связывание TextViews

<TextView 
    android:id="@+id/textviewH" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@+id/imageView1" 
    android:layout_alignTop="@+id/textView5" 
    android:layout_marginLeft="64dp" 
    android:text="@string/HumiumLink" 
    /> 

Это моя ява файл

AlertDialog.Builder dialog = new AlertDialog.Builder(this); 
    View view = LayoutInflater.from(getApplicationContext()).inflate(R.layout.activity_about_t2m, null); 

    Tv = ((TextView) findViewById(R.id.textviewH)); 
    if (Tv != null) 
    { 
     Tv.setMovementMethod(LinkMovementMethod.getInstance()); 

    } 
    dialog.setView(view); 
    dialog.setTitle("About T2M"); 
    dialog.setIcon(R.drawable.ic_launcher); 
    dialog.setCancelable(false); 
    dialog.setPositiveButton(android.R.string.ok, 
      new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int id) 
       { 
        dialog.cancel(); 
       } 
      } 
    ); 

    dialog.create(); 
    dialog.show(); 

Я обнаружил, что код внутри Условный оператор никогда не выполняет это означает, что телевизор является нулевым. Logcat даже показывает странную ошибку, которую я раньше не видел. ! [LogCat Error Messages] [1] Я обвел его синим цветом. Это расстраивает.

EDIT1:

Это все для части меню под названием AboutT2M, который выполняется от основной деятельности. Ниже приведен код меню от моей основной деятельности

public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle presses on the action bar items 
    switch (item.getItemId()) { 
     case R.id.AboutMorseID: 
      Intent AboutMorseI = new Intent(this, About_Morse.class); 
      startActivity(AboutMorseI); 
      break; 
     case R.id.SettingsID: 
      Intent SettingsI = new Intent(this, SettingsActivity.class); 
      startActivity(SettingsI); 
      break; 
     case R.id.ReadMeID: 
      Intent ReadMeI = new Intent(this, ReadMe.class); 
      startActivity(ReadMeI); 
      break; 
     case R.id.AboutT2MID: 
      Intent AboutT2MI = new Intent(this, About_T2M.class); 
      startActivity(AboutT2MI); 
      break; 
     default: 

    } 
    return true; 
} 

[1]: http://i.stack.imgur.com/vRH7Q.pngвыделенный текст

+0

Вы применяете эффект onClick для текста? можем ли мы взглянуть на код о том, как вы начинаете свою деятельность? вы делаете context.startActivity (Intent)? –

+0

Я хочу поместить интерактивную гиперссылку в textview –

ответ

0

Ваша проблема здесь:

View view = LayoutInflater.from(getApplicationContext()).inflate(R.layout.activity_about_t2m, null); 

Вы накачивания R.layout.activity_about_t2m. На следующей строке, вы пытаетесь инициализировать Tv:

Tv = ((TextView) findViewById(R.id.textviewH)); 

Теперь, не ясно, если R.id.textviewH в R.layout.activity_about_t2m или нет. Если это так, то строка кода выше должен быть изменен на:

Tv = ((TextView) view.findViewById(R.id.textviewH)); 

Потому что вам нужно надутый view найти Tv.

Если это не в R.layout.activity_about_t2m, то оно должно быть в R.layout.main_layout_file_name, потому что findViewById() попытается найти его в файле макета, который вы использовали с setContentView().

+0

R.id.textviewH находится в макете, но даже с измененным кодом на Tv = ((TextView) view.findViewById (R.id.textviewH)); Я все еще вижу ту же ошибку в logcat. Но я заметил, что теперь Tv больше не является нулевым. –

+0

@jizcoBorneo Это код внутри действия? Или фрагмент? – Vikram

+0

какой код вы говорите? Код java находится внутри действия меню. Последний бит кода находится в основном действии. –

0

Проверьте контекст (getApplicationContext()) этой линии ....

View view = LayoutInflater.from(getApplicationContext()).inflate(R.layout.activity_about_t2m, null); 

Попробуйте использовать YourActivity.this вместо getApplicationContext().

+0

Он компилируется и запускается. Textview больше не является нулевым, но приложение по-прежнему сбой при нажатии ссылки. Может ли проблема быть в том, как я определил ссылку? Вот вывод логарифма: [Экранный снимок LogCat] (http://oi42.tinypic.com/2dlq13l.jpg) –

+0

Показывает действие, не найденное исключение, это означает, что вы не добавили активность (для запуска) в вашем манифесте проекта. Попробуйте добавить его, он должен работать. – ayon