Я хочу задать вопрос об оптимизации моего кода. Я работаю над проектом, и у меня есть код, работающий для списка onItemClick и обработчика нажатия кнопки, проблема в том, что у меня есть 9 различных действий, и мне нужно копировать и вставлять один и тот же код во все мои действия, проблема, с которой я сталкиваюсь, слишком много та же копия кода вставлена ​​в каждое действие введите описание изображения здесь

Выделенный раздел скользящего меню одинаков во всех действиях, все, что мне нужно сделать, это снова и снова регистрировать их списков кликов, чтобы они работали, и копировать один и тот же код во всех действиях. Я хочу, чтобы он был общим, т.е. код, написанный в одном месте, должен работать для всех действий. Это приложение находится в режиме окончательного запуска, и я не могу перейти к скользящему меню с помощью панели навигации, что было основной причиной, по которой я использовал этот подход, а в верхнем меню также есть разные кнопки, щелчки которых необходимо управлять динамически. Я попытался сделать это статичным, но это не сработало. Спасибо за ваше время и ответы.

1
Umer Kiani 2 Июн 2014 в 09:51

4 ответа

Лучший ответ

То, что упоминает Гейб, было бы идеальным вариантом. Однако, если вы хотите продолжить выполнение нескольких действий, вы можете создать класс, расширяющий Activity, со всем кодом для скользящего меню внутри него. Затем убедитесь, что все остальные действия расширяют созданный вами новый класс.

2
Shivam Verma 2 Июн 2014 в 05:57

Звучит как идеальное использование фрагмента. Поместите представления и связанный код во фрагмент и включите фрагмент в каждое действие.

3
Gabe Sechan 2 Июн 2014 в 05:52

Посетите руководство по скользящему меню Android с помощью панели навигации для использования панели навигации ...

Это может вам помочь ..

1
Pragnesh Ghoda シ 2 Июн 2014 в 05:56

Это решение этой проблемы

public class SuperActivity extends Activity implements OnClickListener,
    OnItemClickListener {

protected static Button btn_logout;
protected static ListView lv_SlidingMenu;
protected static FlyOutContainer rootView;
protected static TextView tv_userName;
protected static TextView tv_memberSince;
protected static ImageView iv_userImage;
protected static ImageView iv_top_home;
protected static TextView tv_top_home;
protected ImageView iv_slidingmenu;
protected static SlidingMenuAdapter slidingMenuAdapter = null;

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

}

@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
        long id) {
    // TODO Auto-generated method stub
    switch(parent.getId()){

    case R.id.list:

        switch(position){
        case 0:
            GeneralDataModel.actionIntent = new Intent(this,
                    ActivityTheGreatControversy.class);
            this.startActivity(GeneralDataModel.actionIntent);
            break;

        case 1:
            break;

        case 2:

            GeneralDataModel.actionIntent = new Intent(this,
                    AtlastActivity.class);
            this.startActivity(GeneralDataModel.actionIntent);
            break;

        case 3:

            GeneralDataModel.actionIntent = new Intent(this,
                    MediaActivity.class);
            this.startActivity(GeneralDataModel.actionIntent);

            break;

        case 4:

            GeneralDataModel.actionIntent = new Intent(this,
                    TimeLineActivity.class);
            this.startActivity(GeneralDataModel.actionIntent);

            break;

        case 6:

            GeneralDataModel.actionIntent = new Intent(getApplicationContext(),
                    ActivityNotes.class);
            this.startActivity(GeneralDataModel.actionIntent);
            GeneralDataModel.actionIntent = null;
            break;

        case 10:
            GeneralDataModel.actionIntent = new Intent(this,
                    ActivitySettings.class);
            this.startActivity(GeneralDataModel.actionIntent);
            rootView.toggleMenu();
            break;

        default:
            rootView.toggleMenu();
            break;

        }


        break;
    }

}

@Override
public void onClick(View v) {
    // TODO Auto-generated method stub
    Toast.makeText(getApplicationContext(), "CLICKEDiy", Toast.LENGTH_LONG)
            .show();
    switch (v.getId()) {

    case R.id.btn_sliding_logout:
        GeneralDataModel.actionIntent = new Intent(getApplicationContext(),
                LoginSignup.class);
        GeneralDataModel.actionIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(GeneralDataModel.actionIntent);
        GeneralDataModel.actionIntent = null;
        new SessionManager(this).logoutUser();
        this.finish();
        break;


    case R.id.iv_home_slidingmenu:
        rootView.toggleMenu();
        break;

    }

}

protected void fillSlidingMenu() {

    tv_userName.setText(UserInformation.getFirstName() + " "
            + UserInformation.getLastName());
    tv_memberSince.setText(UserInformation.getMemberSince());

    lv_SlidingMenu.setAdapter(slidingMenuAdapter);
}
}

И черпайте все свои действия из этого класса

Затем в их onClickListners просто вызовите super.onclick (v);

0
Umer Kiani 2 Июн 2014 в 10:57