4

header.xml

<LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >
        <TextView
            android:id="@+id/txtTime"               
            android:layout_width="0dip"
            android:layout_height="fill_parent"
            android:layout_marginRight="10dp"
            android:layout_weight="1"
            android:gravity="right" />
    </LinearLayout>

すべての画面レイアウトに追加header.xmlしました...

 <include
        android:id="@+id/top_header"
        layout="@layout/header" />

timer、テキストヘッダーに残りの秒ごとのテキストを開始して設定したいtxtTime...だから、どの画面でカウントダウンタイマーのコードを書きtextview、すべての画面表示時間をtextview..

テキストを1つの画面のみに設定し、すべての画面に表示することは可能ですか?

ありがとう

4

2 に答える 2

2

以下のコードを試してください。それはあなたの問題を解決します。

以下の手順に従ってください。

1) Make one BaseActivity Class.
2) Make One MainActivity Class and extend BaseActivity.
3) Make another SecondActivity class and extend BaseActivity.

ここに私はあなたが必要としたすべてのクラスを投稿します。

BaseActivityで何をしますか?

残り時間を表示するMyCountというカウントダウンタイマークラスを1つ作成します。デフォルトでfalseを設定するブールフラグを1つ作成します。したがって、ユーザーがBaseActivityのsetHeading()関数を呼び出すと、falseの場合はタイマーを開始し、trueの場合はタイマーを再度設定して、再度開始します。

BaseActivity

import android.app.Activity;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.widget.TextView;

public abstract class BaseActivity extends Activity
{
    private TextView textView = null;
    public static MyCount counter = null; 
    private static boolean flag = false;
    private static long millisUntilFinishedVariable = 0;

    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);

    }

    protected void setHeading(String message) 
    {
        if(textView == null)
        {
            textView = (TextView)findViewById(R.id.textView);
            if(textView != null)
                textView.setText(message);

            if(flag == false)
            {
                counter = new MyCount(30000, 1000);
                counter.start();
            }
            else
            {
                            counter.cancel();
                counter = new MyCount(millisUntilFinishedVariable, 1000);
                counter.start();
            }
        }
    }

    // countdowntimer is an abstract class, so extend it and fill in methods
    public class MyCount extends CountDownTimer
    {

        public MyCount(long millisInFuture, long countDownInterval) 
        {
            super(millisInFuture, countDownInterval);
        }

        @Override
        public void onFinish() 
        {
            textView.setText("done!");   //TextView object should be defined in onCreate
            flag = false;
        }

        @Override
        public void onTick(long millisUntilFinished) 
        {
            millisUntilFinishedVariable = millisUntilFinished;
            flag = true;
            textView.setText("Left:" + millisUntilFinished/1000);// This will be called every Second.
        }
    }
} 

主な活動

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends BaseActivity 
{
    private Button buttonClick = null;
    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        setHeading("Text From Main Activity"); 

        buttonClick = (Button)findViewById(R.id.buttonClick);
        buttonClick.setOnClickListener(new OnClickListener() 
        {
            @Override
            public void onClick(View arg0) 
            {
                startActivityForResult(new Intent(MainActivity.this,SecondActivity.class), 0);
            }
        });
    }
}

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

   <include layout="@layout/header"/>

   <Button
       android:id="@+id/buttonClick"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_alignParentLeft="true"
       android:layout_alignParentTop="true"
       android:layout_marginLeft="96dp"
       android:layout_marginTop="68dp"
       android:text="Second Activity" />

</RelativeLayout>

SecondActivity

import android.os.Bundle;

public class SecondActivity extends BaseActivity 
{
    @Override
    protected void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.second_activity);
        setHeading("From Second Activity");
    }
}

second_activity.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

   <include layout="@layout/header"/>

</RelativeLayout>

header.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >


    <TextView 
        android:id="@+id/textView"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textSize="18.0sp"/>

</LinearLayout>
于 2012-09-28T08:52:52.153 に答える
1

を使用して、SharedPreferencesすべての画面に設定するテキストを保存できます。次にtextViews、保存したテキストを設定します。すべてのアクティビティtextViewonCreate()またはでを設定できます。onResume()

于 2012-09-28T06:58:18.673 に答える