私の活動のバックボタンでこのエラーが発生しています。すべての活動にこの問題があります。 Backボタンを押すとホーム画面に移動し、スタック内のアクティビティは最後になりません。私はログメッセージを出しましたが、いくつかのアクティビティではLogCatには表示されません。このアクティビティではログを出力します。しかし、いくつかのアクティビティがメソッドの中に入っていないように見えます。BackButtonはヒストリスタックの最後のアクティビティを呼び出さない
私のアプリケーションには3つのタブがあり、そのうちの1つはアクティビティの代わりにActivityGroup
になります。しかし、私はその問題を考えていない、私はこのタブを削除し、それが起こっている。
私はそれをどのように解決するのですか。ホームスクリーンに行く代わりに最後のアクティビティにするにはどうすればいいですか?
実際、呼び出された最後の画面に移動します。ホーム画面で呼び出すと、メイン画面で呼び出すとショートカットとウィジェットが置かれ、この画面に移動します。 そして、私がドキュメントで読んだことは、履歴スタックの最後に行くはずです。つまり、この画面はスタックにありますが、私の活動はありません。右?
これを入れようとしましたが、すべてのアクティビティで機能しません。それはホーム画面に行くのを続ける。私は何ができるのか分からない。
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
finish();
return true;
}
return super.onKeyDown(keyCode, event);
}
私もonBackPressed()
メソッドで試しましたが、何もしませんでした。また、finishを呼び出す代わりに、私は新しい意図を持って試してみて、ある種のアクティビティを明示的に呼びましたが、何もしません。
たくさんありますので、私の活動はすべてここに入れることはできません。
しかし、これは1つで、これで何かがうまくいくなら、他のものに実装することができます。ありがとう。ここで
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);
}
}
新しいアクティビティを開始するときはいつもfinish()を呼び出しますか? –
いいえ、私はそれを呼びますか? – rogcg
いいえ、あなたはしないでください。スタックからアクティビティを破壊していないことを確認するだけです。 onBackPressed()および/またはonKeyDown()を削除してみてください。それは動作しますか? ActivityGroupを拡張するアクティビティを投稿する必要があります。 –