1

嘿,我正在使用下面的代码作为按下按钮将新文本输入到 textview 中,但是它很迟钝并且在我按下它的一半时间不起作用,但另一半时间它工作正常,有人有什么想法吗?

final Button button = (Button) findViewById(R.id.slumpaovrigt);
    button.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
    Random myRandom5 = new Random();
    TextView textovrigt = (TextView) findViewById(R.id.textovrigt);
    switch(myRandom5.nextInt() %151) {
    case 0:
        textovrigt.setText("text 1");
        break;
    case 1:
        textovrigt.setText("text 2");
        break;
    case 2:
        textovrigt.setText("text 3");
        break;
    case 3:
        textovrigt.setText("text 4");
        break;
    }
    }
    });
    }
    }

此外,我使用 4 个不同的 xml 视图,代码相同,但按钮和文本视图不同,文本也不同,每个都包含大约 150 个不同的文本(案例)。

修改了代码,它变得更好了,但仍然有点慢

这是java文件中的完整代码

import java.util.Random;

import android.app.Activity;
import android.content.pm.ActivityInfo;
import android.os.Bundle;
import android.text.method.ScrollingMovementMethod;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class Ovrigtskamt extends Activity {

    Button slumpaovrigt;
TextView textovrigt;
Random slumpaovrigt2 = new Random();


@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.ovrigttext);
    super.onCreate(savedInstanceState);
    this.setRequestedOrientation(
ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);



    slumpaovrigt = (Button) findViewById(R.id.slumpaovrigt);
    textovrigt = (TextView)findViewById(R.id.textovrigt);

    loadDoc();
}

private void loadDoc(){




    String s = "";

    for(int x=0;x<=100;x++){
        s += "Line: "+String.valueOf(x)+"\n";
    }

    textovrigt.setMovementMethod(new ScrollingMovementMethod());

    textovrigt.setText("Klicka på Slumpa");




    slumpaovrigt.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {




    switch(slumpaovrigt2.nextInt() %4) {
    case 0:
  case 0:
    textovrigt.setText("text 1");
    break;
case 1:
    textovrigt.setText("text 2");
    break;
case 2:
    textovrigt.setText("text 3");
    break;
case 3:
    textovrigt.setText("text 4");
    break;
}
}
});
}
}

但正如惠特所说,有 151 种不同的文本

4

3 回答 3

1

如果没有看到更多,我会说您生成的数字并不总是包含在您的 switch 语句中。我建议逐行浏览代码,看看当你到达 switch 语句时会发生什么。

于 2012-05-06T19:40:56.753 回答
0

但是它很迟钝,我按下它的一半时间都不起作用<

难怪它一半的时间都不起作用,因为你的函数 myRandom5.nextInt() %151 将产生从 -151 到 151 的所有值。

/数学.abs

于 2012-05-06T20:45:56.673 回答
0

更新:你正在做 % 151 你的代码中有那么多元素吗?不在此代码示例中。请改用 % 4。更新2:或random.nextInt(4)

我们可以直接看到两个优化,但如果这真的会导致那么大的延迟,这听起来很奇怪。

  1. 不要每次都创建 Random 对象,在启动时创建一次并重复使用。
  2. 不要一遍又一遍地找到视图,只需在启动时进行并保存对它的引用。
于 2012-05-06T19:38:29.920 回答