Проблема получения компонентов AlertDialog - Android - PullRequest
2 голосов
/ 22 апреля 2011

Я пытаюсь создать alerttdialog с представлением и получить доступ к TextView, чтобы установить его текстовое значение.Вот код:

    private void ShowLogDialog() {
    AlertDialog ad = new AlertDialog.Builder(this).create();
    ad.setIcon(R.drawable.icon);
    ad.setTitle("Ultimate Logs");
    ad.setView(LayoutInflater.from(this).inflate(R.layout.log_layout, null));
    TextView text = (TextView)ad.findViewById(R.id.logTextView_log);  // RETURNS NULL
    //Log.i(TAG, "Into ShowLogDialog : GoT TextView = " + text);
    //String logsText = "";
    //text.setText(logsText);
    ad.setButton("Ok", new DialogInterface.OnClickListener() {          
        @Override
        public void onClick(DialogInterface dialog, int which) {
            dialog.dismiss();
        }
    });
    ad.show();
}

log_layout.xml

   <LinearLayout android:id="@+id/linearLayout1" android:layout_width="match_parent" android:layout_height="match_parent" 
            android:orientation="vertical" android:scrollbars="vertical" android:scrollbarAlwaysDrawVerticalTrack="true" xmlns:android="http://schemas.android.com/apk/res/android">
            <TextView android:layout_height="wrap_content" android:text="TextView" android:id="@+id/**logTextView_log**" android:layout_width="wrap_content"></TextView>
        </LinearLayout>

Почему я не могу получить доступ к TextView?он возвращает ноль и выбрасывает исключение NullPointerException.Я не могу получить доступ напрямую с помощью findBiewById, поэтому я использую ad.findViewById, но я получаю только null.Может кто-нибудь помочь мне знать, где я иду не так!

Спасибо

Ответы [ 3 ]

2 голосов
/ 23 апреля 2011

Это похоже на работу.Повеселись!

        AlertDialog.Builder builder= new AlertDialog.Builder(this);
        LayoutInflater inflater= getLayoutInflater();
        final View myView= inflater.inflate(R.layout.alert_dialog_text_entry, null);
        builder.setTitle("About");
        builder.setMessage("Test");
        builder.setView(myView);
        AlertDialog alert= builder.create();
        TextView stateful= (TextView)myView.findViewById(R.id.TextView01);
        stateful.setText("More Testing");
        Log.d(Utilities.TAG,stateful.toString());
        alert.show();
0 голосов
/ 22 апреля 2011

Почему бы сначала не вернуть LayoutInflater.from(this).inflate(R.layout.log_layout, null) в View переменную? (Приведенный ниже код не проверен)

    ad.setTitle("Ultimate Logs");
    View inflatedView = LayoutInflater.from(this).inflate(R.layout.log_layout, null);         
    TextView text = (TextView)inflatedView.findViewById(R.id.logTextView_log);  // RETURNS NULL
    Log.i(TAG, "Into ShowLogDialog : GoT TextView = " + text);
    String logsText = "";
    text.setText(logsText);
    ad.setView(inflatedView );
    ad.setButton("Ok", new DialogInterface.OnClickListener() {   
0 голосов
/ 22 апреля 2011

в чем смысл этого ..?

android:id="@+id/**logTextView_log**

** означает ..?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...