TextView исчезает после обновления с помощью setText () - PullRequest
0 голосов
/ 11 августа 2011

У меня есть 3 класса: main, Sublist и editcrap.

На данный момент у меня есть 2 текстовых просмотра, разделенных кнопкой в ​​XML-файле Sublist; и EditText и Button в моем XML-файле editcrap.

То, что я хотел сделать, это взять текстовый ввод из EditText в действии editcrap, нажать кнопку и вернуть его в действие Sublist и отобразить его в первом текстовом представлении XML-файла Sublist. Я сделал это с помощью Intents и startActivityForResult () из акта Sublist.

Проблема:

Но после получения данных бак в списке активности; после "subject1.setText (newText);" код выполняется ... все, что я вижу в активности Sublist в эмуляторе, это кнопка (которая должна быть между 2 TextViews) и TextView справа Левый TextView исчезает. Нет ошибки на эмуляторе или ничего ... просто исчезает TextView. Я пытался обойти это, но не повезло. Может кто-нибудь сказать мне, что я пропускаю? :)

мой код:

protected void onActivityResult(int requestCode, int resultCode, Intent data) 
{
    // TODO Auto-generated method stub
    super.onActivityResult(requestCode, resultCode, data);
    switch(requestCode)
    {
        case 1: if(resultCode==Activity.RESULT_OK)
        {
            String newText = data.getStringExtra("thetext");
            subject1.setText(newText); 
            // this is where the textview supposed to update but 
            // instead vanishes entirely
        }
    break;
    }
}

//second activity's code:

sub1 = (EditText) findViewById(R.id.peditText1);    
final String theText = sub1.getText().toString();
parambutton1 = (Button) findViewById(R.id.parambutton1);

parambutton1.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub
            Intent i = new Intent(editcrap.this, Sublist.class);

            i.putExtra("thetext", theText);
            setResult(Activity.RESULT_OK, i);
            finish();

        }
    });
}

так второе действие возвращает входной текст из EditText.

Ответы [ 3 ]

1 голос
/ 11 августа 2011

В документации всегда используйте дополнительные имена с префиксом имени вашего пакета.

Пример: "com.example.thetext"

Пример установленного результата:

data.putExtra("com.example.thetext", yourstring);
setResult(Activity.RESULT_OK, data);

Пример получения результата:

String newText = data.getStringExtra("com.example.thetext");
subject1.setText(newText); 

Чтобы избежать ошибочного ввода имени дополнительного поля, я использую строковые ресурсы, поэтому я могу сделать getString(R.string.extra_thetext), который хранит для меня «com.example.thetext», поэтому я не могу набрать его позже (не очень хорошая проверка во время сборки ?). Но вы также можете использовать константу:

static final String THE_TEXT = "com.example.thetext";
0 голосов
/ 21 октября 2016

У меня была похожая проблема, мой textView исчез после нескольких циклов и понял, что я пытаюсь присвоить нулевое значение аргументу settext, и это вызывает эту проблему

TLDR; проверьте ваши строки, если они нулевые или нет

0 голосов
/ 11 августа 2011

Возможно, вы захотите использовать другую перегрузку getStringExtra.

Попробуйте использовать data.getStringExtra("thetext","defaultText"). Это гарантирует, что ЧТО-ТО будет помещено в представление.

Кроме того, если вы не знали, первым аргументом является тег, а не фактический текст. :)

Надеюсь, это поможет.

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