質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

解決済

AndroidStudio ハイスコアの情報をxmlに表示させたいです。

hacchan
hacchan

総合スコア0

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

1回答

0評価

0クリップ

1700閲覧

投稿2018/06/26 06:03

前提・実現したいこと

いつもお世話になっております。
androidstudioで、簡単なゲームアプリを作っています。

画面の流れとしては、

スタート画面(activity_screenstart.xml)

ゲーム画面(MainView.java)

リトライ画面(activity_screenretry.xml)

となっています。
そのほかに、ハイスコアを管理するPlayLog.javaがあります。

MainViewクラス(とPlayLogクラス)で取得したハイスコアの数値を、
スタート画面に表示したいのですが、どのようにしたらよいでしょうか。

そのままMainViewにハイスコアを表示することはできるのですが、
画面をまたいで?xmlに表示する方法がわかりません。

よろしくお願いいたします。

該当のソースコード

java

package com.hachiya.candyzombie; import android.app.Activity; import android.content.pm.ActivityInfo; import android.os.Bundle; import android.os.Handler; import android.view.SurfaceView; import android.view.View; import android.widget.ImageButton; public class MainActivity extends Activity { private SurfaceView view; private Handler handlerA = new Handler(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); setScreenStart(); } //スタート画面 public void setScreenStart() { setContentView(R.layout.activity_screenstart); ImageButton startButton = findViewById(R.id.start_button); startButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { setScreenPlay(); } }); } //リトライ画面 public void setScreenRetry() { setContentView(R.layout.activity_screenretry); ImageButton retryButton = findViewById(R.id.retry_button); retryButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { setScreenStart(); } }); } //プレイ画面 public void setScreenPlay() { view = new MainView(this); setContentView(view); // 30秒後に1度だけ処理を実行 handlerA.postDelayed(new Runnable() { public void run() { setScreenRetry(); }, 30 * 1000); }

java

package com.hachiya.candyzombie; import android.content.Context; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.media.MediaPlayer; import android.view.MotionEvent; import android.view.SurfaceHolder; import android.view.SurfaceView; import java.util.Random; // SurfaceViewクラスを継承したクラスを作成 public class MainView extends SurfaceView implements SurfaceHolder.Callback, Runnable { private int score = 0; SurfaceHolder surfaceHolder; Thread thread; //コンストラクタ public MainView(Context context) { super(context); surfaceHolder = getHolder(); surfaceHolder.addCallback(this); PlayLog.init(context); } @Override public void surfaceCreated(SurfaceHolder holder) { thread = new Thread(this); thread.start(); } @Override public void surfaceDestroyed(SurfaceHolder holder) { thread = null; } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { } @Override public void run() { Canvas canvas = null; while (thread != null) { try {          PlayLog.logScore(score); //描画開始 canvas = surfaceHolder.lockCanvas();                   //省略(ゲーム操作に応じて、scoreが更新されるようになっています) //描画終了 surfaceHolder.unlockCanvasAndPost(canvas); } catch (Exception e) { } } } }

java

package com.hachiya.candyzombie; import android.content.Context; import android.content.SharedPreferences; public final class PlayLog { private static final String FILENAME_PLAYLOG = "playlog"; private static Context context; private static int lastScore = 0; private static int highScore = 0; public static void init(final Context context) { PlayLog.context = context; load(); } public static void logScore(final int score) { lastScore = score; if (highScore < lastScore) { highScore = score; save(); } } public static int lastScore() { return lastScore; } public static int bestScore() { return highScore; } public static void save() { SharedPreferences preference = context.getSharedPreferences(FILENAME_PLAYLOG, Context.MODE_PRIVATE); SharedPreferences.Editor editor = preference.edit(); editor.putInt("hScore", highScore); editor.commit(); } public static void load() { SharedPreferences preference = context.getSharedPreferences(FILENAME_PLAYLOG, Context.MODE_PRIVATE); highScore = preference.getInt("hScore", 0); } }

xml

<!--activity_screenstart--> <?xml version="1.0" encoding="utf-8"?> <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" tools:context=".MainActivity"> <ImageView android:id="@+id/startImg" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:scaleType="centerCrop" android:src="@drawable/bgimg1" /> <ImageButton android:id="@+id/start_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:background="@drawable/start" /> <ImageView android:id="@+id/player" android:layout_width="200dp" android:layout_height="150dp" android:layout_alignTop="@+id/start_button" android:layout_toLeftOf="@+id/start_button" android:src="@drawable/player" /> <ImageView android:layout_width="300dp" android:layout_height="200dp" android:layout_toLeftOf="@+id/start_button" android:layout_above="@+id/player" android:src="@drawable/startwords" /> <TextView android:id="@+id/Title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/title" android:textSize="30sp" android:textColor="#FFFFFF" android:layout_centerHorizontal="true" android:layout_above="@id/start_button" android:layout_marginBottom="20dp"/> </RelativeLayout>

補足

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。