Я развиваюсь на Google Pixel под управлением Android 7.1.1.Android 7.1.1 методы кнопки обратной связи не называются
Ниже представлены 2 мероприятия, PlayActivity и ScoreScreenActivity. Поток должен выглядеть так: Main> Play> Game> Score> [back button]> Play> [back button]> Main.
Когда кнопка возврата нажата в ScoreScreenActivity, вызывается метод onKeyPressed(). Мы перенаправляемся на PlayActivity. Все идет нормально. Теперь, когда мы находимся в PlayActivity, когда снова нажата кнопка возврата, мы НЕПРАВИЛЬНО перенаправляемся обратно в GameActivity из Activity, который называется ScoreScreenActivity. Вместо этого мы должны быть отправлены в MainActivity.
Кроме того, у меня есть finish() после startActivity() в GameActivity и в ScoreScreenActivity. А также, получает отображается эта ошибка, когда мы переходим от ScoreScreenActivity к PlayActivity:
W/ViewRootImpl[ScoreScreenActivity]: Cancelling event due to no window focus: KeyEvent
Вот коды деятельности: Не функциональный код:
public class PlayActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_play);
Button mOneMinute = (Button) findViewById(R.id.play_one_minute);
if (mOneMinute!=null){
mOneMinute.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(PlayActivity.this, GameActivity.class);
startActivity(intent);
finish();
}
});
}
}
@Override
public void onBackPressed(){
System.out.println("this isn't printed either");
// AlertDialog happens here
}
// Copy & Pasted from another StackOverFlow (http://stackoverflow.com/questions/16646301/onbackpressed-is-not-being-called)
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
System.out.println("never gets printed");
if (keyCode == KeyEvent.KEYCODE_BACK) {
Log.d("back", "should go back to MainActivity");
Intent i=new Intent(PlayActivity.this, MainActivity.class);
startActivity(i);
finish();
}
return true;
}
Функциональный код:
public class ScoreScreenActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_score_screen);
int score = 0;
Intent intent = getIntent();
score = intent.getIntExtra("mScore", score);
System.out.println(score);
TextView mTV = (TextView) findViewById(R.id.score_text);
if (mTV != null){
mTV.setTextSize(20);
mTV.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
String str = "Well Done!\nYour Score: "+ score +"\nThere's no high score system for now,\n" +
"so remember this score\nif it's a new high score!";
SpannableString ss = new SpannableString(str);
ss.setSpan(new RelativeSizeSpan(2), 0, 25, 0);
mTV.setText(ss);
}
Button mReturn = (Button) findViewById(R.id.score_return);
if (mReturn!= null){
mReturn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent returnIntent = new Intent(ScoreScreenActivity.this, MainActivity.class);
startActivity(returnIntent);
}
});
}
}
@Override
public void onBackPressed(){
System.out.println("this does not get printed");
// AlertDialog happens here
}
// Copy & Pasted from another StackOverFlow (http://stackoverflow.com/questions/16646301/onbackpressed-is-not-being-called)
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
System.out.println("this gets printed");
if (keyCode == KeyEvent.KEYCODE_BACK) {
Log.e("back",""+1);
Intent i=new Intent(ScoreScreenActivity.this,PlayActivity.class);
startActivity(i);
finish();
}
return true;
}
}
опубликовать активность гр –
@Charuka я отправил свои образцы кода, а для некоторых Причина мой код работает сейчас. Но не уверен, почему он не работал раньше. – joshua
все, что не работает должным образом .. сейчас? –