0

TextView ボックスを操作しようとしているときに、null ポインター エラーが発生し続けました。正しい ID に設定したにもかかわらず、TextView ボックスがコードにリンクされていないことがわかりました。何が問題なのかわからないけど。すべての TextViews を同じ方法でリンクしていますが、この問題が発生したのはこれが初めてです。これは、TextView のプロパティを定義する XML ファイルの一部です。

<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"
    />

これは私のJavaファイルです

    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();

if ステートメント内のコードが実行されないことがわかりました。これは、Tv が null であることを意味します。Logcat は、これまでに見たことのない奇妙なエラーを表示します。![LogCat エラー メッセージ][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強調されたテキスト

4

2 に答える 2

0

この行のコンテキスト (getApplicationContext()) を確認してください....

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

getApplicationContext() の代わりに YourActivity.this を使用してみてください。

于 2013-08-04T04:25:38.033 に答える
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.textviewHR.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()

于 2013-08-04T03:56:35.470 に答える