5

AlertDialog でメッセージの linktextcolor を設定しようとしています。しかし、ViewById を見つけようとすると、アプリがクラッシュします。私は何を間違っていますか?アクティビティの XML にメッセージを含める必要がありますか?

final AlertDialog d =  new AlertDialog.Builder(new ContextThemeWrapper(SplashPage.this, R.style.Theme_Sherlock_Light_Dialog))
            .setIcon(android.R.drawable.ic_dialog_info).setTitle(getString(R.string.termsTitle))
                //.setView(message).setCancelable(false)
                .setMessage(Html.fromHtml(getString(R.string.terms))).setCancelable(false)
                .setPositiveButton(getString(R.string.accept), new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        app.setTermsAccepted(true);
                        dialogInterface.dismiss();

                        Intent intent = new Intent(SplashPage.this, LoginPage.class);
                        startActivity(intent);
                    }
                }).create();

        //FAILING: TextView TV = (TextView)d.findViewById(android.R.id.message);
        //TV.setLinkTextColor(Color.MAGENTA);
4

2 に答える 2

5

AlertDialog のドキュメントを見たところ、そのメソッドを呼び出すと、 onStart メソッドで処理した XML が検索されるようです( http://developer.android.com/reference/android/app/Dialog.html# findViewById%28int%29 )。代わりに、アクティビティのfindViewById メソッドを呼び出すだけです (たとえば、これがアクティビティ クラスにある場合は、以下を呼び出すだけです:

TextView TV = (TextView) findViewById(android.R.id.message);

動作するはずです。)

于 2013-02-12T03:49:12.157 に答える
2

DialogFragment を使用している場合は、前の回答で回避された DialogFragment.onStart() メソッドの後にアクセスできます。

@Override
public void onStart() {
super.onStart();
    final TextView textView = (TextView) getDialog().findViewById(android.R.id.message);
    //Do something!
}
于 2014-05-21T21:06:07.510 に答える