3

このガイドに従って、http://wptrafficanalyzer.in/blog/adding-drop-down-navigation-to-action-bar-in-android/

ドロップダウン ナビゲーション バーを追加できました。クリックイベントとすべてが機能します。さて、オプションを選択すると、独自のレイアウトとさまざまな機能を備えた別の画面に移動するようにするにはどうすればよいですか。

事前に感謝します。

編集:これは私が持っているものです。私のアプリは約 1 ミリ秒実行され、"Hello World" を垣間見ることができ、その後クラッシュします。ちなみに私はSherlockを使っています。

package com.poe.statcalc;

import com.actionbarsherlock.app.SherlockActivity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.Toast;
import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.app.ActionBar.OnNavigationListener;

public class MainActivity extends SherlockActivity {

 /** An array of strings to populate dropdown list */
String[] actions = new String[] {
    "Bookmark",
    "Subscribe",
    "Share",
    "Something"

};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    /** Create an array adapter to populate dropdownlist */
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(getBaseContext(), R.layout.sherlock_spinner_item, actions);

    /** Enabling dropdown list navigation for the action bar */
    getSupportActionBar().setNavigationMode(com.actionbarsherlock.app.ActionBar.NAVIGATION_MODE_LIST);

    /** Defining Navigation listener */
    ActionBar.OnNavigationListener navigationListener = new OnNavigationListener() {

        @Override
        public boolean onNavigationItemSelected(int itemPosition, long itemId) {
            switch(itemPosition) {
            case 0:
                Intent i = new Intent(MainActivity.this, SecondActivity.class);
                startActivity(i);
                break;
            case 1:
                //...
                break;
            }
            return false;
        }
    };

    /** Setting dropdown items and item navigation listener for the actionbar */
    getSupportActionBar().setListNavigationCallbacks(adapter, navigationListener);
    adapter.setDropDownViewResource(R.layout.sherlock_spinner_dropdown_item);

}

@Override
public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) {
    getSupportMenuInflater().inflate(R.menu.activity_main, menu);
    return super.onCreateOptionsMenu(menu);
}

}

4

3 に答える 3

3

要素を変更したい場合は操作する必要がありますが、そのポーラスにクラスをArrayAdapter使用できるとは思いません。ArrayAdapter<String>文字列以外のものを使用する必要がある場合があります。

onNavigationItemSelectedクリックを処理するには、関数を変更する必要があります。

@Override
public boolean onNavigationItemSelected(int itemPosition, long itemId) {
    switch(itemPosition) {
    case 0:
        Intent i = new Intent(this, SecondActivity.class);
        startActivity(i);
        break;
    case 1:
        // ...
        break;
    }
    return false;
}
于 2012-12-19T18:42:38.713 に答える
1

これがあなたが抱えていた正確な問題かどうかはわかりませんが (そのように聞こえますが!)、スピナーから startActivity を使用することに注意してください: onCreate() 中に呼び出される可能性があります。

ActionBar の onNavigationItemSelected が起動時に呼び出されています。これを回避するにはどうすればよいですか?

于 2013-07-15T08:16:45.103 に答える
1

startActivity(Intent)コールバックを呼び出して、新しいアクティビティを開始する必要がありonNavigationItemSelectedます。

于 2012-12-19T18:42:03.127 に答える