Как закрыть и открыть навигационный ящик для динамического меню

Я просто попробовал это, и это сработало для меня.

Мое единственное отличие заключалось в том, что я использовал & lt;> для from и для:

from = "<email1@dal.ca>"
to = "<email2@gmail.com>"

и моей почты управление было другим, я использовал

control=list(smtpServer="ASPMX.L.GOOGLE.COM"))
0
задан Tamir Abutbul 16 January 2019 в 10:56
поделиться

1 ответ

Одним из способов достижения желаемого поведения является использование интерфейса , метод которого вызывается внутри MenuAdapter.

Создайте интерфейс, подобный следующему:

public interface ActivityChangedListener {

   public void onActivityChanged();

}

Этот интерфейс должен быть реализован классом, имеющим ссылку на mDrawerLayout, который вы хотите закрыть. В этом случае мы могли бы заставить Activity реализовать метод следующим образом:

public class MainActivity extends AppCompatActivity implements 
ActivityChangedListener

public void onActivityChanged(){
  mDrawerLayout.close();
}

Внутри вашего MenuAdapter вы должны добавить следующее:


    public class MenuAdapter extends BaseExpandableListAdapter {
    ActivityChangedListener activityChangedListener

    public MenuAdapter(Context context, ArrayList<MainMenu> arraylist, ActivityChangedListener acl) {
        this.context = context;
        this.arraylist = arraylist;

        // You could use a setter for this, but care because acl could be null if not set in the right order
        this.activityChangedListener = acl;
    }

    // Now you have to call the listener inside the onClick method in every statement where you switch to a new activity
    tv_state.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (arraylist.get(i).getSUB_MODULE_LIST().get(i1).getMLINK_NAME().equals("Daily Work Report")) {
                    activityChangedListener.onActivityChanged();
                    context.startActivity(new Intent(context, DailyWorkReportListActivity.class));

                } else if (arraylist.get(i).getSUB_MODULE_LIST().get(i1).getMLINK_NAME().equals("Employee Contacts")) {   
                    activityChangedListener.onActivityChanged();
                    context.startActivity(new Intent(context, EmployeeContactsActivity.class));
    }

Единственное, что осталось заключается в редактировании вызова конструктора из MenuAdapter и передачи экземпляра ActivityChangedListener, в этом случае это будет this, потому что наш экземпляр Activity реализует интерфейс:

MenuAdapter obj_adapter = new MenuAdapter(MainActivity.this, arrayList, this);

Рекомендуется использовать интерфейс для сохранения абстракции, расширяемости и прозрачности.

0
ответ дан WUUUGI 16 January 2019 в 10:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: