Android setText()是否覆盖自身?

Android setText()是否覆盖自身?,android,printing,settext,Android,Printing,Settext,我对Android编程有点陌生,我想做的只是设置发送一些文本到屏幕上。这个功能应该在你打开和关闭屏幕时使用。当您打开时,屏幕上会打印一个时间戳When on和一个1。此外,当您将其关闭时,屏幕上会打印“何时关闭”的时间戳和0。我在简单地“附加”上一个时间戳时遇到了一些麻烦,这意味着我想持续记录Android屏幕何时关闭以及何时打开。它不断地覆盖自己。以下是我的尝试: protected void onResume(){ //this is for when the screen is turne

我对Android编程有点陌生,我想做的只是设置发送一些文本到屏幕上。这个功能应该在你打开和关闭屏幕时使用。当您打开时,屏幕上会打印一个时间戳When on和一个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
}
如果有人知道解决方案,那就太好了!谢谢

  • 您正在创建一个新的布局,然后为该布局设置内容视图,这意味着不仅会覆盖TextView,而且会覆盖所有其他内容,因为整个布局都将被替换。相反,继续使用一个文本视图和一个布局
  • TextView中有一个用于追加的方法
  • 我还将创建一个共享方法:

    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"));
    }
    

    然后使用
    ScreenReceiver.screenOn
    作为参数调用。

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


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

    啊,这太棒了!谢谢只是一个简单的问题——TextView text=(TextView)findviewbyd(R.id.myText);,有什么意义;?在这种情况下,该变量未使用。你是说text.append(sNow+(screen?“0”“1”);?@user200081我现在注意到了这一点,我正在重写这个方法,并在
    myText
    中省略了“my”。但是,是的。任何一种方法都有效,只要它是同一个变量,并且你的布局中有一个id为
    myText
    TextView