Вопрос по android – Обновление textview в другом формате XML из основной деятельности

5

Я создал новый XML-файл в папке макета, который называетсяlog.xml, Он содержит только одинTextView.

Можно ли установить текст в textview, расположенном в log.xml, из моей основной деятельности? Или это может быть установлено только в деятельности, которая использует log.xml в качестве представления? Надеюсь, вы понимаете, что я имею в виду здесь, иначе плохо разработано.

Спасибо

@Sam Как новое действие при нажатии на кнопку в моем main.xml. Johan
ваша mainActivity имеет основной макет, который называется main.xml, и вы добавили новый макет log.xml, так что вы должны создать новый Activity и, конечно, вы можете изменить его значение, начиная с первого Activity (MainActivity), используя намерения Houcine
Когда вы планируете показывать log.xml; в новом действии, как строка в ListView (или Spinner и т. д.), как новое представление в текущем действии? Sam

Ваш Ответ

4   ответа
0

Ниже решение сработало для меня -

  1. Get View object of layout XML file (ex. toast_loading_data) -

    View layout = inflater.inflate(R.layout.toast_loading_data,
            (ViewGroup) findViewById(R.id.toast_layout_root));
    
  2. Get the TextView element from this View (ex. TextView id - toast_text)-

    TextView tvToast = (TextView) layout.findViewById(R.id.toast_text);
    
  3. Set text of the TextView -

    tvToast.setText("Loading data for " + strDate + " ...");
    
  4. Below is snippet for customized Toast message from Main Activity -

    View layout = inflater.inflate(R.layout.toast_loading_data,
            (ViewGroup) findViewById(R.id.toast_layout_root));
    TextView tvToast = (TextView) layout.findViewById(R.id.toast_text);
    tvToast.setText("Loading data for " + strDate + " ...");
    Toast toast = new Toast(getApplicationContext());
    toast.setGravity(Gravity.CENTER, 0, 0); //Set toast gravity to bottom
    toast.setDuration(Toast.LENGTH_LONG);   //Set toast duration
    toast.setView(layout);  //Set the custom layout to Toast
    

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

-1

Я думаю, я понимаю, что вы пытаетесь сказать. Если вы делаете это:

TextView tv = (TextView) findViewById(R.id.textView2);    
tv.setText(output);

гдеtextView2 это идентификатор текстового представления, для которого вы хотите установить текст, вы можете установить для него любое строковое значение, используяsetText() функция. Надеюсь это поможет!

Если log.xml в данный момент не отображается,tv будет нулевым
Этот ответ неверен. findViewById () не работает, если идентификатор & amp; вы ищете находится в другой деятельности. Пожалуйста, обратитесь к @ nuno-gon & # xE7; alves ответу, который является правильным.
Я не верю в это, findViewById () работает только с текущим действием или надутым представлением.
Мог ли он сделать это?TextViewActivity.findViewById(R.id.textView) гдеTextViewActivity такое действие с просмотром текста?
11

Если вы не установили XML, о котором вы говорите, в "setContentView ()" Вы всегда можете получить его с разметкой. Вы должны будете добавить телевизор к текущему макету, используя addView ().

LayoutInflater inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

View vi = inflater.inflate(R.layout.log, null); //log.xml is your file.
TextView tv = (TextView)vi.findViewById(R.id.tv); //get a reference to the textview on the log.xml file. 
Привет Нуно, выше надувать работает нормально. Я хочу обновить значение textview в определенной позиции. любая помощь.? Потому что, внутри макета, я нажимаю кнопку, когда нажимаю кнопку, получаю ответ от сервера и показываю обновление в определенном текстовом виде.
Попробую, спасибо Johan
Как раз то, что я ищу. Благодарю.
0

Если log.xml не включен в текущий, видимый макет findViewById () вернет ноль.

Поскольку вы хотите установить текст TextView при загрузке его в новом действии, вы можете передать новую строку в намерении, используемом для запуска вашего действия.

В соответствующем onClick () из вашего первого занятия:

Intent intent = new Intent(this, Second.class);
intent.putExtra("myTextViewString", textString);
startActivity(intent);

В вашем втором действии onCreate ():

setContentView(R.layout.log);

TextView textView = (TextView) findViewById(R.id.textView);
Bundle extras = getIntent().getExtras();
if(extras != null) {
    String newText = extras.getString("myTextViewString");
    if(newText != null) {
        textView.setText(newText);
    }
}

Похожие вопросы