【问题标题】:How to realise multiple text editing from one button?如何实现一键多文本编辑?
【发布时间】:2018-05-27 18:54:47
【问题描述】:

这是目标: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;

我做错了什么?

【问题讨论】:

    标签: android android-edittext counter


    【解决方案1】:

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

    【讨论】:

    • 谢谢,但我需要一键编辑一次文本。
    • @ded-logoped 我已经更新了我的答案。请让我知道这是你想做的吗?
    【解决方案2】:

    这确实不值得回答,但我很无聊......

    根据您的代码判断,您最好编写更多 Java 和 Android 教程。 stackoverflow 也不是这类问题的社区!

    首先,i 作为全局变量和 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;
        }
    });
    }
    }
    

    每次按下按钮时,文本都会更改。直到背景发生变化,然后它保持不变。

    【讨论】:

      猜你喜欢
      • 2011-05-02
      • 2017-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多