1

我对 Android 编程有点陌生,我想要的只是将一些文本设置到屏幕上。此功能应该适用于您打开和关闭屏幕时。开机时,屏幕上会打印开机时的时间戳和 1。此外,当您关闭它时,屏幕上会打印一个关闭时间的时间戳和一个 0。我在简单地“附加”到前一个时间戳时遇到了一些麻烦,这意味着我想连续记录 Android 屏幕何时关闭和屏幕何时打开。它不断地覆盖自己。这是我的尝试:

protected void onResume(){ //this is for when the screen is turned back on
    Time now = new Time();
    if(!ScreenReceiver.screenOn){
        now.setToNow();
        String lsNow = now.format("%m-%d-%Y %I:%M:%S");
        LinearLayout lView = new LinearLayout(this);
        myText = new TextView(this);
        myText.setText(lsNow + ", 1");
        lView.addView(myText);
        setContentView(lView);
... //more code here
}

 protected void onPause(){
    Time now = new Time();
    if(ScreenReceiver.screenOn){
        now.setToNow();

        String lsNow = now.format("%m-%d-%Y %I:%M:%S");
        LinearLayout lView = new LinearLayout(this);
        myText = new TextView(this);
        myText.setText(lsNow + ", 0");
        lView.addView(myText);
        setContentView(lView);
...//more code here
}

如果有人知道解决方案,那就太好了!谢谢!

4

2 回答 2

0
  1. 您正在创建一个新布局,然后为该布局设置内容视图,这很有意义,不仅 TextView 将被覆盖,而且其他所有内容都将被覆盖,因为整个布局都被替换了。而是继续使用一个 TextView,一个布局。
  2. TextView 中有一个append()用于追加的方法。

我也会做一个共享的方法:

public void logTime (boolean screen)
{
  Time now = new Time();
  now.setToNow();

  String lsNow = now.format("%m-%d-%Y %I:%M:%S");
  TextView myText = (TextView) findViewById (R.id.myText);
  myText.append (" " + lsNow + (screen ? "0" : "1"));
}

然后调用 withScreenReceiver.screenOn作为参数。

于 2013-02-23T21:21:23.890 回答
0

您的代码当前正在恢复和暂停时重置活动的整个布局。当您打电话时,setContentView您实际上是在用您创建的新布局交换旧布局。在资源文件夹中创建一个布局,然后在活动中onCreate调用该setContentView方法。之后,使用FindviewById<TextView>获取对TextView布局中的引用。您需要传递您在布局文件中声明的元素的 ID。

为了将文本附加到控件,您必须使用当前文本,然后向其中添加新信息:textView.setText(textView.getText() + "new text")这样旧数据就不会被覆盖。

于 2013-02-23T21:22:04.780 回答