アンドロイドで最後の画面から始める方法

このQ&Aのポイント
  • アンドロイドでスマホアプリを作っている初心者です。アプリ内にはAとBの2つの画面があり、初めはAの画面から始まります。終了時にどの画面で終了したかを保存して、再開時にその画面から始める方法を教えてください。
  • 考えていた方法としては、終了時にSharedPreferencesを使ってどの画面で終了したかを保存し、再開時に保存した画面に移動する方法でしたが、ボタンでの画面移動の場合もresumeが呼ばれるためうまくいきません。
  • アンドロイドの終了時の画面を保存して再開時に同じ画面から始める方法を教えてください。初心者ですので、よろしくお願いします。
回答を見る
  • ベストアンサー

アンドロイド 最後の画面から始めたい。

アンドロイドでスマホアプリを作ってます。 1つのアプリ内にAとBの2つの画面があります。 最初はAの画面から始まります。 AとBの画面は画面内のボタンを押す事などで、相互に移動できます。 移動は、intentというのを使ってます。移動元の画面はfinishで終了してます。 今、アプリを終了した時にAの画面で終わったら、再開時Aの画面から Bの画面で終わったら再開時Bの画面から始まるようにしようとしてます。 考えてた方法としては、終了(pause)する時に、 SharedPreferencesなどを使ってどの画面で終了したかをキーとして保存し 再開(resume)する時にその画面に移動するという方法ですが、 ボタンでの画面移動の時もresumeが呼ばれるため、上手くいかないことに気づきました。 再開時に終了した画面から始めるにはどのようにするのが良い方法なのでしょうか。 まだかなり初心者です。よろしくお願いします。

  • evaan
  • お礼率45% (32/71)

質問者が選んだベストアンサー

  • ベストアンサー
  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

一番分かりやすい構造は 新たにSTARTUPというアクティビティを作って そいつがresumeでSharedPreferencesを読んで AかBを起動して自分は終わるというものではないだろうか。 これだと、AとBは終了時にSharedPreferencesを書き、 STARTUPは起動時にSharedPreferencesを読む、 という単純な動作になる。 android.intent.category.LAUNCHERに応答するのはSTARTUPになるので、 アイコンやアクティビティ名はしっかり設定しておこう。 Androidは、戻るボタンはアクティブなアクティビティが終了するが、 ホームボタンはホームアプリを起動するまたはアクティブにする (つまりアクティブなアクティビティは終了せずに後ろに隠れるだけ) という動作になるためその違いも考慮に入れる必要があるかも知れない。

evaan
質問者

お礼

お返事が非常に遅くなり申し訳ありません。 方法について理解できました。どうも真にありがとうございます。

関連するQ&A

  • Android アプリ

    同アプリのソースファイルで定義したViewを呼び出して表示後、そのViewを消すということがしたいです。 詳細は 【画面A】が起動したときに常駐する【画面Z】を起動 → 【画面A】から【画面B】に遷移した際に常駐している【画面Z】を停止(削除) という動作を完成したいので 常駐アプリを【画面A】のOnCreate()で Intent intent = new Intent(getApplication(), OverlapService.class); // 常駐Serviceの開始 startService(intent); として起動させていて 画面BのOnPause()に Intent intent = new Intent(getApplication(), OverlapService.class); // 常駐Serviceの停止 stopService(intent); としていますが画面Zは残ったままになります。 画面BのOnStop()もコードを記述してみましたが上手くいきません。 どなたかお詳しい方、ご教授よろしくお願いいたします。

  • androidの画面遷移について

    アンドロイドアプリケーションを開発しています。 アプリで以下のようにA画面から始まり3つのアクティビティを遷移するのですが A画面 → B画面 → C画面  ↑          ↓     ←  ←  ←  C画面からA画面に遷移させようとするとアプリケーションが止まってしまいます。 このとき画面は真っ黒またはA画面になり、タッチしても動作しません。 ログも停止します。 画面はすべてSurfaceViewで作っています。遷移はすべてIntentです。 Intentで同じ画面に戻るとき指定しなければ行けないことや、配慮しなければ いけないことがありましたら、教えてください。 ログも止まってしまうため、手がかりがない状態です。 これらのことが記載されているページや図書がありましたら教えていただけないでしょうか? 以上、よろしくお願いします。

  • Androidで画面遷移ができません.

    初心者ながら,Android向けにアプリを開発しています. ページXXXXXでボタンを表示させ,ページYYYYYで画像が表示されるようにしたいのですが,ページXXXXXで表示されたボタンを押すとエラーが出て強制終了となってしまいます. 画面遷移されるページ(YYYYY)には,適当な位置にタッチさせるとタッチした位置に移動する画像についてプログラミングしてあります.ページYYYYYは個別で実行すると正常に起動します. どこに原因があるのか教えてください.よろしくお願いします. ページXXXXXのソースは以下のとおりです. 【ソース】 import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.content.Intent; public class XXXXX extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button b1 = (Button) findViewById(R.id.button1); b1.setOnClickListener(new View.OnClickListener() { public void onClick(View view) { Intent intent = new Intent(XXXXX.this, YYYYY.class); startActivity(intent); } }); } }

    • ベストアンサー
    • Java
  • Android Serviceの戻り値

    Androidの開発を行っています。 サービスが「強制終了されて再起動した時」という条件で処理を行いたいです。 【START_REDELIVER_INTENT】を使用すればサービスが強制終了されて再起動したというのを感知できるのかなと思ったのですが・・・ http://yuki312.blogspot.jp/2012/07/androidserviceonstartcommand.html には 「システムはサービスを新たにインスタンス化し、サービスの再起動を行います。 再起動時のonStartCommandには、強制終了前と同じ内容のIntentが渡されます。 再起動順序は強制終了前の起動順序と同じです。(A⇒Bで起動した場合、A⇒Bで再起動) また、startServiceによりサービスを複数回起動していた場合は、起動した回数分 onStartCommandが呼ばれます。」 と説明されています。 サービスA、サービスBと2つのサービスが別クラスで定義されていても戻り値が【START_REDELIVER_INTENT】だと混同されてしまということでしょうか?

    • ベストアンサー
    • Java
  • android4.0.4で画面外アイコンのクリック

    お世話になります、 私はXperia miniという画面3インチの小さなスマホを使っており talkband b1というファーウェイ製のBluetooth通話バンドを使おうとしたところ 「talkband b1」の設定アプリが解像度の考慮をしていないらしく、決定ボタンが画面外にあり押すことが出来ません(縦横切替、スクロールも出来ない)。 一度だけ決定ボタンを押せればそれで問題は解決します。 サポートに電話をしたところ、あーそうですか、じゃあダメですね。 と外資系企業なのでしかたないですが素っ気ない返事で解決策はありませんでした。 私が考えるには、VNCサーバアプリをインストールしてボタンを押すか、解像度を強制的に変更するようなアプリで対応できるかと思うのですが、どちらもroot化が必要でした。 root化をせずにandroidの画面外にあるボタンを押す方法を他にご存知の方がおりましたらお教え頂ければと存じます

  • Java Android アプリの終了

    Androidアプリを終了させるため finish() ※android:noHistory="true" System.Exit(); android.os.Process.killProcess(android.os.Process.myPid()); moveTaskToBack (bolean); どれを実行させた場合であってもタスクにには残り続けます。 これはAndroidの仕様のようですが、これをWindosなどのように終了は終了としてメモリから消す方法は無いのでしょうか? いくつかのアプリは終了処理によりメモリ上からも消されていることから、方法が無い訳では無いと考えます。 実際のところはどうなのでしょうか?

  • Androidで1画面に2アプリの表示は可能か?

    最近Androidアプリ作成をはじめて↓のようなアプリをつくろうとしたところ あっさり壁にぶち当たりました。 Aアプリで動画を表示しつつ、その上に(透過した)Bアプリを表示し、 Bアプリに絵や文字を表示させた時に、 下のAの動画がちゃんと更新させるようなアプリ。 アンドロイドは、他アプリ上に別のアプリを一部分だけ重ねて、 両方のアプリを同時に更新するような動きってできますでしょうか? #手持ちの機種のVerは2.3です。

  • androidアプリでアプリ内のデータ同期方法

    androidアプリでアプリ内でデータを同期する方法を教えて下さい。 具体的にどのような感じか例を挙げると、android端末が2つ近くにあったとして同じアプリの同じ画面を開いたとします。それぞれのアプリのビューには数字(textViewか何か)とボタンがあり、ボタン押すと数字が1つづ増えていきます。片方の端末でボタンを押すと、もう片方の端末でも数字が増えていく つまり、端末Aでボタンを4回数、端末Bでボタンを6回押したとしてもどちらの端末にも「10」という数字が表示されている状態にしたいです。 bluetoothやインターネット環境をつかってデータのやり取りが出来るのは調べてわかりましたが、このようなアプリ内でのデータの同期方法が調べても見つけることができませんでした。。 よろしくお願いします。

  • android アプリ終了時にタスクも終了させる

    android アプリを終了させてもタスクが残っています。 つまり□ボタンを押すとタスクが表示されます。 android アプリ終了時にタスクも終了するような操作方法があれば教えてください。 よろしくお願いします。

  • PSone(画面付)が突然作動しなくなった

    PSoneでゲームをしようと電源を入れてロードしたら いきなりPAUSEの画面が出てどのボタンを押してもまったく作動せず(恐らくフリーズしたのではないかと思うのですが)仕方ないので電源を付け直してもこの状態のままなので、まったくゲームが出来ません。解決方法をお教え下さい。