如何从一个按钮实现多个文本编辑?

时间:2018-05-27 18:54:47

标签: android android-edittext counter

这是目标:1个textview,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 :(得分:0)

真的,这不值得回答,但我很无聊......

判断你的代码,你最好再做一些Java和Android教程。 stackoverflow也不是这类问题的社区!

首先,我作为一个全局变量是无用的,也是onCreate中的初始化,因为你在onClick函数中覆盖了i。 然后你有一个for循环,然后是一个switch 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;
    }
});
}
}

每按一下按钮,文字就会改变。直到背景改变然后它保持不变。

答案 1 :(得分:0)

最后,您只能在编辑文本中看到R.string.s6的值,背景将设置为R.drawable.tigs。 for循环在几分之一秒内执行,并逐个设置值。但由于其快速执行,您只能看到最后一个值。但是如果你想逐个看到所有文本,你可以使用java线程并通过以毫秒为单位传递时间来调用它的sleep方法。

enter image description here