0

戻るボタンに問題があります。彼は働きません。最初のアクティビティから 2 番目のアクティビティに、2 番目から 3 番目のアクティビティに移動すると、戻るボタンが機能しなくなります。私が使用した:

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        moveTaskToBack(true);
        Log.v("Co1s", "Cos1");
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

しかし、ボタンを押すと、次のようになります。

05-23 10:45:57.863: W/KeyCharacterMap(238): keycharmap ファイルを開けませんpm8058-keypad.kcm.bin'. hw.keyboards.0.devname='pm8058-keypad' 05-23 10:45:57.863: W/KeyCharacterMap(238): デフォルトのキーマップを使用: /system/usr/keychars/qwerty.kcm.bin

そして、この関数のこのログはログに表示されません。なんで?

編集: acrivity nr1:

protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.services_description);

        back_button = (Button) findViewById(R.id.service_back_button);
        back_button.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {
                intent = new Intent(services_description.this, service.class);
                TabActivityGroup parentActivity = (TabActivityGroup)getParent();
                parentActivity.startChildActivity("menu_activity", intent);     
                finish();
            }
        });
    }
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            Log.v("Co1s", "Cos1");
        }
        return super.onKeyDown(keyCode, event);
    }

そして2番目:

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.service);

    title = (TextView) findViewById(R.id.serviceTitle);
    description = (TextView) findViewById(R.id.serviceDescription);
    nextPage = (ImageView) findViewById(R.id.serviceNextPage);
    back_button = (Button) findViewById(R.id.service_back_button);


    nextPage.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            intent = new Intent(service.this, services_description.class);
            TabActivityGroup parentActivity = (TabActivityGroup)getParent();
            parentActivity.startChildActivity("menu_activity", intent);     

        }
    });
    back_button.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {

            finish();

        }
    });
}
@Override
public void onBackPressed() {
    Log.v("Cos", "Cos");
    finish();
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        moveTaskToBack(true);
        Log.v("Co1s", "Cos1");
        return true;
    }
    return super.onKeyDown(keyCode, event);
}
4

3 に答える 3

1

メソッドで戻るボタンをオーバーライドすることも、このメソッドでアプリ内のアクティビティを移動するonBackPressed()こともできます。onKeyDown() または onBackPressed()このリンクintentからさらに取得できます。これにより、これを行う方法が提供されます

于 2012-05-23T09:16:12.460 に答える
0

戻るボタンを機能させるために何もする必要はありません。ブロック全体if (keyCode == KeyEvent.KEYCODE_BACK)などを削除するだけで、すべて問題ありません。

何らかの理由で戻るボタンがクリックされたときにログを記録する必要がある場合は、次のようにできると思います。

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        Log.v("Co1s", "Cos1");
    }
    return super.onKeyDown(keyCode, event);
}

重要なことは、ボタンのクリックの「処理」をオーバーライドされたメソッドに渡し、Android OS 自体が前のアクティビティに戻る処理を行うことです。

于 2012-05-23T08:53:10.610 に答える
0

onBackPressed()オーバーライドする代わりに、アクティビティでオーバーライドできますonKeyDown()

于 2012-05-23T09:08:54.673 に答える