Как реализовать множественное редактирование текста с одной кнопки? - PullRequest
0 голосов
/ 27 мая 2018

Вот цель: 1 просмотр текста, 1 кнопка.после нажатия кнопки текст в textview редактируется до новой строки.Я пытался это понять, но это не работает.Пожалуйста помоги.Существует 1 действие, 1 кнопка, 1 телевизор и несколько нажатий для редактирования текста.

public class Second extends AppCompatActivity {

TextView tv;
Button btn;
int i;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second2);

tv = (TextView) findViewById(R.id.tv);
btn = (Button) findViewById(R.id.btn);
i = 1;
tv.setText(R.string.s1);

btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
for (i=1;i<28;i++);{

switch (i){

case 1:tv.setText(R.string.s1);
break;

case 2:tv.setText(R.string.s2);
break;

case 3:tv.setText(R.string.s3);
break;

case 4:tv.setText(R.string.s4);
break;

case 5:tv.setText(R.string.s5);
break;

case 6:tv.setText(R.string.s6);
break;

case 7:tv.setBackgroundResource(R.drawable.tigs);
tv.setHeight(430);
tv.setWidth(350);
tv.setText(R.string.s6_1);
break;

default:break;

Что я делаю не так?

Ответы [ 2 ]

0 голосов
/ 28 мая 2018

В конце вы увидите только значение R.string.s6 в тексте редактирования, а фон будет установлен как R.drawable.tigs.Цикл for выполняется за доли секунды и устанавливает значение одно за другим.Но из-за его быстрого выполнения вы увидите только последнее значение.Но если вы хотите видеть весь текст один за другим, вы можете использовать поток Java и вызвать его метод сна, передав время в миллисекундах.

enter image description here

0 голосов
/ 27 мая 2018

На самом деле это не заслуживает ответа, но мне скучно ...

Судя по вашему коду, вам лучше написать еще несколько руководств по Java и Android.Кроме того, stackoverflow не является сообществом для подобных вопросов!

Прежде всего, я бесполезен в качестве глобальной переменной, а также инициализации в onCreate, потому что вы перезаписываете меня в функции onClick.Затем у вас есть цикл for и после этого переключатель case, так что вы выполняете case 1 до 7 все друг за другом.Что ваша программа делает, так это 6 раз изменяет текст (с 1 по 6), а затем, наконец, выполняет кейс 7, в котором вы устанавливаете фон, изменяете размеры и устанавливаете текст R.string.s6_1 текстового представления.Все это происходит так быстро, что все, что вы увидите, это случай 7. Каждый раз, когда вы нажимаете кнопку.

Я действительно не знаю, что вы хотите архивировать, но это то, что делает ваша программа.

Редактировать:

@ ded-logoped Я думаю, это то, что вы ищете:

public class Second extends AppCompatActivity {

private TextView tv;
private Button btn;
private int i; // bad name as i is usually used in loops


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_second2);

    tv = (TextView) findViewById(R.id.tv);
    btn = (Button) findViewById(R.id.btn);
    i = 1;
    tv.setText(R.string.s1);

    btn.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {

    // deleted the loop here

    switch (i){

    case 1: tv.setText(R.string.s1); break;
    case 2: tv.setText(R.string.s2); break;
    case 3: tv.setText(R.string.s3); break;
    case 4: tv.setText(R.string.s4); break;
    case 5: tv.setText(R.string.s5); break;
    case 6: tv.setText(R.string.s6); break;
    case 7: 
        tv.setBackgroundResource(R.drawable.tigs);
        tv.setHeight(430);
        tv.setWidth(350);
        tv.setText(R.string.s6_1);
        break;
    default: break;
    }
});
}
}

Каждый раз, когда вы нажимаете на кнопку, текст меняется.пока фон не изменится, а затем останется прежним.

...