0

みなさん、こんにちは。

    私はクラスメートのカップルと私がクラスのプロジェクトのために作ったアプリを持っています。現在、アプリの改善と合理化を継続しています。これが私がこれまでに持っているものです:

  • スプラッシュスクリーン
  • ホームページ
  • ホール 1 - 18
  • スコアページ
  • Aboutページ

ホーム画面 ホール 1 - 18 スコア ページ 概要ページ

いくつかの小さなことを除いて、ほとんどすべてを理解しました。私が現在取り組んでいる問題は次のとおりです。

各ホールページからスコアページにデータを渡す。

私はそれをページからページへと渡す方法を知っており、最初はそうしていたのでブルートフォースできましたが、ずさんに見えます。

//Code (partial)

//(From Hole 1)

@Override
public void onClick(View v)
{
    TextView tvScoreLbl = (TextView) findViewById(R.id.scoreLbl);
    tvScoreLbl.setText(String.valueOf(count));

    if(v == findViewById(R.id.btnAdd))
    {
        count++;
        tvScoreLbl.setText(String.valueOf(count));
    }
    else if(v == findViewById(R.id.btnMinus))
    {
        count--;
        tvScoreLbl.setText(String.valueOf(count));
    }
    else if(v == findViewById(R.id.btnPrev))
    {
        Intent i_prev = new Intent(Hole_01.this, HomePage.class);
        startActivity(i_prev);
    }
    else if(v == findViewById(R.id.btnNext))
    {
        Intent i_pass = new Intent(Hole_01.this, ScorePage.class);
        i_pass.putExtra("score1", tvScoreLbl.getText().toString());
        Intent i_next = new Intent(Hole_01.this, Hole_02.class);
        startActivity(i_next);
    }


//(From ScorePage)

String score;
TextView tvScore1 = (TextView) findViewById(R.id.tvScore1);

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.scorepage);

    Button btnHome = (Button) findViewById(R.id.btnHome);
    btnHome.setOnClickListener(this);

    score = getIntent().getExtras().getString("score1");
    tvScore1.setText(score);
}

前もって感謝します。

4

3 に答える 3

0

putExtra を使用してすべてのインテント間でデータを渡すのではなく、小さな SQLite DB を使用して、スコア画面が読み取ることができる各アクティビティの結果を保存してみませんか。

SQLite ドキュメント

Android Notepad Tutorial は SQLite の例にも適しています

于 2013-06-07T14:11:52.350 に答える
0

すべての状態をアプリケーションクラスに保持します。

どのアクティビティからでも、必要に応じて書き込みます。

ScorePageアクティビティでそれを読み取ります。

ここで利用可能な詳細と例: ( Using the Android Application class to persist data )

于 2013-06-07T14:12:18.043 に答える