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だけでなく、レイアウト全体が置き換えられるため、他のすべても上書きされることを意味します。代わりに、1つのレイアウトで1つのTextViewを使用し続けます。
  2. append()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ます。

于 2013-02-23T21:21:23.890 に答える
0

コードは現在、再開および一時停止時にアクティビティのレイアウト全体をリセットしています。電話をかけるsetContentViewと、基本的に古いレイアウトを作成した新しいレイアウトと交換します。リソースフォルダに1つのレイアウトを作成してから、アクティビティのメソッドonCreateを呼び出しますsetContentView。その後、を使用FindviewById<TextView>して、レイアウト内のへの参照を取得しTextViewます。レイアウトファイルで宣言した要素のIDを渡す必要があります。

コントロールにテキストを追加するには、現在のテキストを使用してから、新しい情報を追加するtextView.setText(textView.getText() + "new text")必要があります。これにより、古いデータが上書きされなくなります。

于 2013-02-23T21:22:04.780 に答える