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

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

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

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

Android

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

Android Studio

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

Q&A

1回答

5563閲覧

Fragmentでfinish()と同じ動作をしたい

Takato-Nishiyam

総合スコア12

Java

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

Android

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

Android Studio

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

0グッド

0クリップ

投稿2017/01/29 09:26

Activityで使えていたfinish()関数がFragmentでは使用できないことを知りました。
ですが、どうしてもonCheck()が呼ばれたときにfinish()関数と同じ動作をさせたいんです。
なにか良い方法はないでしょうか??
よろしくお願いします。

public

1 private static final String TAG = QuestStepFragmentYesNo.class.getSimpleName(); 2 3 public static QuestStepFragmentYesNo newInstance(QuestStep questStep) { 4 Log.d(TAG, "newInstance: " + questStep); 5 6 QuestStepFragmentYesNo fragment = new QuestStepFragmentYesNo(); 7 putQuestStep(fragment, questStep); 8 9 return fragment; 10 } 11 /*問題文*/ 12 private AppCompatTextView mQuestionText; 13 /*"○""×"ボタン*/ 14 private AppCompatButton mYesButton; 15 private AppCompatButton mNoButton; 16 /*解答覧*/ 17 private String[] answers = new String[4]; 18 /*"正解"と"不正解"の画像*/ 19 private AppCompatImageView mAnswer01; 20 private AppCompatImageView mAnswer02; 21 /*獲得ポイント*/ 22 private AppCompatTextView mScore; 23 /*制限時間*/ 24 private ProgressBar mProgressBar; 25 private Handler mHandler = new Handler(); 26 27 @Override 28 public View onCreateView(LayoutInflater inflater, ViewGroup container, 29 Bundle savedInstanceState) { 30 Log.d(TAG, "onCreateView: "); 31 32 View view = inflater.inflate(queststep_fragment_yesno, container, false); 33 /*問題文*/ 34 mQuestionText = (AppCompatTextView) view.findViewById(R.id.question_text); 35 /*"ボタン"テキスト*/ 36 List<QuestStepChoice> choices = mQuestStep.getChoices(); 37 /*"○""×"ボタン*/ 38 mYesButton = (AppCompatButton) view.findViewById(R.id.yes_button); 39 mNoButton = (AppCompatButton) view.findViewById(R.id.no_button); 40 /*問題文*/ 41 mQuestionText.setText(mQuestStep.getQuestion()); 42 /*"○""×"ボタン*/ 43 mYesButton.setOnClickListener(new OnButtonClickListener()); 44 mNoButton.setOnClickListener(new OnButtonClickListener()); 45 /*"正解"と"不正解"の画像*/ 46 mAnswer01 = (AppCompatImageView) view.findViewById(R.id.mAnswer01); 47 mAnswer02 = (AppCompatImageView) view.findViewById(R.id.mAnswer02); 48 /*ポイント*/ 49 mScore = (AppCompatTextView) view.findViewById(R.id.mScore); 50 /*乱数のListを作成*/ 51 List<Integer> ran = new ArrayList<>(); 52 for(int i = 0; i < 2; i++) { 53 int tmp =(int)(Math.random()*2); 54 ran.add(i,tmp); 55 if(i >= 1) { 56 for (int j = 0; j < i; j++) { 57 if(ran.get(j) == tmp){ 58 i--; 59 ran.remove(j); 60 } 61 } 62 } 63 } 64 /*ボタンの名前*/ 65 mYesButton.setText(choices.get(ran.get(0)).getValue()); 66 mNoButton.setText(choices.get(ran.get(1)).getValue()); 67 /*制限時間*/ 68 mProgressBar = (ProgressBar) view.findViewById(R.id.mProgressBar); 69 Bar(); 70 return view; 71 } 72 73 class OnButtonClickListener implements View.OnClickListener { 74 @Override 75 public void onClick(View view) { 76 AppCompatButton button = (AppCompatButton)view; 77 answers[0] = button.getText().toString(); 78 79 // 入力した解答を処理する 80 final boolean result = mCallback.onEnterAnswer(QuestStepFragmentYesNo.this, mQuestStep, answers); 81 82 if (result == true) { 83 showPositiveFeedback(); 84 } else { 85 showNegativeFeedback(); 86 } 87 88 onCheck(result); 89 } 90 } 91 92 public void showPositiveFeedback() { 93 mAnswer01.setVisibility(VISIBLE); 94 } 95 public void showNegativeFeedback() { 96 mAnswer02.setVisibility(VISIBLE); 97 } 98 99 // ユーザーの解答を判定する 100 public boolean onGrade(QuestStep questStep, String[] answers) { 101 boolean result = false; 102 int sum = answers.length; 103 // ボタンのラベルと正解が同じか? 104 List<QuestStepAnswer> thisAnswers = questStep.getAnswers(); 105 for(int i =0 ; i < sum && answers[i] != null; i++) { 106 if (thisAnswers.get(i).getValue().equals(answers[i])) { 107 result = true; 108 }else{ 109 result = false; 110 break; 111 } 112 } 113 114 return result; 115 } 116 117 // ポイントを計算する 118 @Override 119 public int onCalculatePoints(QuestStep questStep, boolean result) { 120 int point = 0; 121 122 if (result == true && questStep.getErrorCount() == 0) { 123 point = questStep.getMaxPoint(); 124 } 125 /*ポイント表示*/ 126 if(result != false) { 127 mScore.setText("+" + String.valueOf(point) + "p"); 128 } 129 return point; 130 } 131 132 133 // リトライ可能かを判定する 134 public boolean onCanRetry(QuestStep questStep) { 135 return false; 136 } 137 138 /*制限時間の設定*/ 139 public void Bar(){ 140 mProgressBar.setMax(20); 141 mProgressBar.setProgress(0); 142 new Thread(new Runnable() { 143 @Override 144 public void run() { 145 while(mProgressBar.getProgress() < 20) { 146 mHandler.post(new Runnable() { 147 @Override 148 public void run() { 149 mProgressBar.incrementProgressBy(1); 150 //mProgressBar.getProgressDrawable().setColorFilter(0xFF378CF9 , android.graphics.PorterDuff.Mode.SRC_IN); 151 } 152 }); 153 try { 154 Thread.sleep(1000); 155 } 156 catch (InterruptedException e) { 157 } 158 } 159 // このクエストステップを終了する 160 answers[0] = "間違い"; 161 // 入力した解答を処理する 162 boolean result = mCallback.onEnterAnswer(QuestStepFragmentYesNo.this, mQuestStep, answers); 163 onCheck(result); 164 } 165 }).start(); 166 } 167 168 public void onCheck(boolean result){ 169 final boolean result_ok = result; 170 mHandler.postDelayed(new Runnable() { 171 @Override 172 public void run() { 173 // このクエストステップを終了する 174 mProgressBar.setProgress(0); 175 mCallback.onEnd(QuestStepFragmentYesNo.this, mQuestStep, result_ok); 176 //ここにfinish()関数と同じ動作をするプログラムを書きたい 177 } 178 }, 1000); 179 } 180} 181コード

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

どのような動きを期待しているかはわかりませんが、Fragmentを表示する前の状態に戻すのであればFragmentManager#popBackStackを使うといいですよ。

投稿2017/01/29 12:04

yona

総合スコア18155

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問