私はJavaとAndroidスタジオに関する限り、かなり初心者です。だから、私は単純な謎のゲームを構築しています。各アクティビティは質問とテキストフィールドで構成されています。正しい答えは次のものに移動します。SharedPreferencesを使用して続行ボタンを作成する
メインアクティビティには2つのボタンがあります:新しいゲーム1つと、私を困らせるもの明らかに、私が欲しいのは、押されると、あなたが最後にやった質問にあなたが連れて行くことです。私はSharedPreferencesがこれを行うために使わなければならないことを知っています。私の問題は、動作するコードを考えることができないということです。
私のコードは次のとおりです。研磨が必要な場合もありますが、まだ学習中です。
主な活動のJava
public class MainMenu extends AppCompatActivity {
private Button mStartInterrogationButton;
private VideoView mLogoprwto;
private Button mContinueButton; //This one is the one I'm asking about
@Override
public void onResume() {
super.onResume();
setContentView(R.layout.activity_main_menu);
mLogoprwto = (VideoView) findViewById(R.id.logoprwto);
mLogoprwto.setVideoPath("android.resource://my.path/"+R.raw.teloslogo);
mLogoprwto.start();
mLogoprwto.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mLogoprwto.start();
}
});
mStartInterrogationButton = (Button)findViewById(R.id.StartInterrogationButton);
mStartInterrogationButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startGame();
}
});
}
private void startGame() {
Intent intent = new Intent(this, Question01.class);
startActivity(intent);
finish();
}
@Override
public void onBackPressed() {
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
}
質問1つの活性のJava(次のものが同じである)事前に
public class FirstQuestion extends AppCompatActivity {
private Button mSayAnswer;
private EditText mAnswerbox;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_first_question);
mAnswerbox = (EditText)findViewById(R.id.Answerbox);
mSayAnswer = (Button)findViewById(R.id.SayAnswer);
mSayAnswer.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String answer = mAnswerbox.getText().toString().trim();
if (answer.equalsIgnoreCase("nothing")){
Intent i = new Intent(getApplicationContext(), QuestionTwo.class);
startActivity(i);
}else if (answer.equalsIgnoreCase("black")) {
Intent i = new Intent(getApplicationContext(), QuestionTwo.class);
startActivity(i);
}else {
}
}
});
}
@Override
public void onBackPressed()
{
startActivity(new Intent(getApplicationContext(), MainMenu.class));
finish();
}
};
おかげで、私はこのための解決策を探してきましたかなりの数日間。
はお時間をいただき、ありがとうございます:)私はあなたの作品を追加する必要があり、私は完全にどこに自分のコードに理解していないために謝罪する必要が...私は3分の1(のonClick)の部分を得たが、私は理解できません最初の2つは置くつもりです。 「ファイル」(SharedPreferencesを書き込む場所)では、新しいJavaタブを作成してそこに配置する必要がありますか?私は本当にこれについて残念ですが、私はちょうどそれの把握を得ています:) – Animated24
問題はありません。あなたの2番目の質問のために、SharedPreferencesはあなたのアプリのストレージのXMLファイルにデータを保存します。したがって、getSharedPreferences()の呼び出しでファイル名を指定すると、読み書き用のファイルが開きます(ファイルが存在しない場合はファイルも作成されます)。データを保存した同じファイルを開いていることを確認するだけでなく、実際にこのパラメータを心配する必要はありません。 あなたの最初の質問として、私はそれに答えるためのアップデートを追加しました。 – Waves
すべてが意味をなさないようになりました。あなたのおかげで、コードの背後にあるロジックを理解し始めました。一つの最後のこと...すべてがうまくいくように見えますが、私は私の中で赤い下線を引いています(これはQuestion01.classです)。パーツ(主なアクティビティのインテント)が表示され、「コンストラクタインテントを解決できません」というメッセージが表示されます。私は "this"を "MainActivity.this"に置き換えて解決策を見つけましたが、今は90%の時間を続けていますが、それはQuestion01にかかります。一度それが私に最後の質問に答えた - 別のものは何もしなかった。私はそれがあまりにも多いことを知っている、本当にあなたにこれについて十分にあなたに感謝できない。 – Animated24