У меня эта ошибка с кнопкой в моих действиях. У всех видов деятельности есть эта проблема. Когда я нажимаю кнопку «Назад», она переходит на домашний экран, а не к последней активности в стеке. Я поместил сообщение журнала, но в некоторых действиях оно не печатает его на LogCat, в этом занятии, опубликованном здесь, оно печатает журнал. Но похоже, что некоторые действия не идут внутри метода.
В моем приложении три вкладки, одна из которых расширяет ActivityGroup
вместо Activity. Но я не думаю, что это проблема, я удалил эту вкладку, и она продолжает происходить.
Итак, мой вопрос: как мне решить эту проблему, как заставить его перейти к последнему занятию вместо перехода на домашний экран?
На самом деле он переходит к последнему экрану, где он был вызван. Если я вызываю его на главном экране, он переходит к этому, если я вызываю его на главном экране, где я помещаю ярлыки и виджеты, он переходит на этот экран.
И для того, что я прочитал в документах, он должен идти до последнего в стеке истории, что означает, что этот экран находится в стеке, но не мои действия. Правильно?
Я пытался поставить это, но не работает для всех видов деятельности. Он продолжает идти на домашний экран. Я не знаю, что это может быть.
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
finish();
return true;
}
return super.onKeyDown(keyCode, event);
}
Я тоже пытался с onBackPressed()
методом, но ничего. А также, вместо того, чтобы вызывать финиш, я пытался с новым намерением и вызывал некоторую простоту активности, но тоже ничего.
Я не могу поставить все свои действия здесь, потому что много.
Но вот один, и, может быть, если что-то работает с этим, я могу реализовать на других. Спасибо.
public class MyActivity extends Activity {
private ListView listview;
private ImageView imgView;
private Resources res;
private Drawable transition;
private SimpleCursorAdapter adapter;
private DataHandlerDB handler;
private SQLiteDatabase db;
private OpenHelper helper;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
helper = new OpenHelper(this);
db = helper.getWritableDatabase();
setBasicContent();
}
@Override
public void onStart() {
super.onStart();
helper = new OpenHelper(this);
db = helper.getWritableDatabase();
setBasicContent();
}
@Override
public void onDestroy() {
super.onDestroy();
DataHandlerDB.selectTopCalls(this).close();
db.close();
helper.close();
}
@Override
public void onPause() {
super.onPause();
}
@Override
public void onStop() {
super.onStop();
DataHandlerDB.selectTopCalls(this).close();
db.close();
helper.close();
}
@Override
protected void onResume() {
super.onResume();
setBasicContent();
}
public void setBasicContent() {
listview = (ListView) findViewById(R.id.list_view);
Cursor c = DataHandlerDB.selectTopCalls(this);
c.moveToFirst();
startManagingCursor(c);
adapter = new SimpleCursorAdapter(this, R.layout.list_item, c,
new String[] { DataHandlerDB.CONTACT_NAME_COL,
DataHandlerDB.CONTACT_NUMBER_COL,
DataHandlerDB.CONTACT_DURATION_COL,
DataHandlerDB.CONTACT_DATE_COL }, new int[] {
R.id.contact_name, R.id.phone_number, R.id.duration,
R.id.date });
listview.setAdapter(adapter);
}
}
Вот действие, которое расширяет ActivityGroup и называется так:
tabHost.addTab(tabHost.newTabSpec("three").setIndicator("Filter Options",
res.getDrawable(R.drawable.filteroptionsiconfile))
.setContent(new Intent(this, FilterOptionsGroup.class)));
FilterOptionsGroup.java
public class FilterOptionsGroup extends ActivityGroup {
public static FilterOptionsGroup group;
private ArrayList<View> history;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.history = new ArrayList<View>();
group = this;
View view = getLocalActivityManager().startActivity(
"FilterOptions",
new Intent(this, FilterOptions.class)
.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP))
.getDecorView();
replaceView(view);
}
public void replaceView(View v) {
// Adds the old one to history
history.add(v);
// Changes this Groups View to the new View.
setContentView(v);
}
}