3

私は、フライインメニュー(google +、fb、steam、youtubeに似ています)を使用するアプリケーションを構築しようとしている初心者のAndroid開発者です。https://github.com/jfeinstein10/SlidingMenu が私のニーズに適していることがわかりました。今私の質問は、このライブラリを使用する最も効率的な方法は何ですか

これは私の活動の一つです

public class ExampleActivity2 extends SlidingActivity implements OnItemClickListener{

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        setBehindContentView(R.layout.list);
        getSlidingMenu().setBehindOffsetRes(R.dimen.actionbar_home_width);
        Button btn = (Button) findViewById(R.id.button);

        //ListClass l=new ListClass(getApplicationContext());

        ListView lv=(ListView) findViewById(R.id.lvname);
        String[] values = new String[] { "Android", "iPhone", "WindowsMobile",
                  "Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X",
                  "Linux", "OS/2" };
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                  android.R.layout.simple_list_item_1, android.R.id.text1, values);

                // Assign adapter to ListView
                lv.setAdapter(adapter); 
                lv.setOnItemClickListener(this);
                getActionBar().setHomeButtonEnabled(true);
    }

    @Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
        switch(arg2){
        case 1:
            Intent myIntent = new Intent(this,TestClass.class);
            startActivity(myIntent);
            break;

        }

    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home:
                // app icon in action bar clicked; go home
               toggle();
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }

}

ご覧のとおり、この実装では、使用するすべてのアクティビティのサイド メニューにデータを入力する必要があります。(この例では、ユーザーがサイド メニューから項目 1 を選択すると、TestClass という新しいアクティビティを開始します。ここで、リストビューにデータを入力し、onitemlistener を再度実装する必要があります)。

listView コード全体 (onitemclicklistener を使用) を、すべてのアクティビティ (詳細ビュー) に対して呼び出すことができる別のファイルに移動する方法が必要です。コードを別のクラスに移動しようとしましたが、Eclipse で null ポイント例外エラーがスローされます。 . 誰かがこのライブラリの使用方法の例を教えてくれれば、非常にありがたいです (サンプルはあまり役に立ちませんでした)。前もって感謝します :)

4

2 に答える 2

2

自分でコーディングする手間を省きたい場合は、scringoを使用することをお勧めします。アプリに追加できる一種のプラグインで、google+/FB/Youtube のようなスライド メニューがあります (メニューが右か左かを選択できます)。また、使用することを選択できる組み込み機能 (チャット、友人の招待など) も備えており、もちろん独自のコマンドをメニューに追加することもできます。

于 2013-03-16T07:35:37.180 に答える
0

全体を統合できる簡単な方法が 1 つありますBaseActivity。それは、スライド メニュー セットアップ関連のコードなど、すべての一般的なものを含むクラスを使用することです。スライド メニュー機能を必要とするすべてのアクティビティは、BaseActivity代わりに拡張できるようになりました。SlidingActivity

このようなもの:

public class BaseActivity extends SlidingActivity implements OnItemClickListener{

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //content view is set by the activity which extends BaseActivity
        setBehindContentView(R.layout.list);
        getSlidingMenu().setBehindOffsetRes(R.dimen.actionbar_home_width);
        //Button btn = (Button) findViewById(R.id.button);

        //ListClass l=new ListClass(getApplicationContext());

        ListView lv=(ListView) findViewById(R.id.lvname);
        String[] values = new String[] { "Android", "iPhone", "WindowsMobile",
                  "Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X",
                  "Linux", "OS/2" };
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                  android.R.layout.simple_list_item_1, android.R.id.text1, values);

                // Assign adapter to ListView
        lv.setAdapter(adapter); 
        lv.setOnItemClickListener(new OnItemClickListener() {

            /*
             * (non-Javadoc)
             * 
             * @see
             * android.widget.AdapterView.OnItemClickListener#onItemClick
             * (android.widget.AdapterView, android.view.View, int, long)
             */
            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id) {
                switch(arg2){
                    case 1:
                        Intent myIntent = new Intent(this,TestClass.class);
                        startActivity(myIntent);
                        break;
                }
            }
        });
        getActionBar().setHomeButtonEnabled(true);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home:
                // app icon in action bar clicked; go home
               toggle();
                return true;
            default:
                return super.onOptionsItemSelected(item);
        }
    }

}

アクティビティの例は次のようになります。

public class ExampleActivity2 extends BaseActivity{

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Button btn = (Button) findViewById(R.id.button);
    }
}

常に super を呼び出すことを忘れないでください。そうしないと、実行時例外が発生します

于 2013-03-14T14:01:23.117 に答える