Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Работают ли Listener в абстрактной родительской Activity? - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Создание меню в приложении: О чем говорит ошибка? http://www.cyberforum.ru/android-dev/thread1714652.html
Делал все абсолютно так, как в этом видео, при запуске (Run app) вылазит ошибка, о чем она говорит? Что нужно исправить?
Программирование Android Вызов js функции в webView Добрый день! Имеется сайт со страницей поиска, который грузится в webView. Во время поиска нужно вызывать js функцию, которая возвращает true/false. Подскажите как это можно сделать. Хотел применить... http://www.cyberforum.ru/android-dev/thread1714639.html
Запустить Код на телефоне Программирование Android
Здравствуйте, дорогие друзья. Хочу обратится к вам вот по такому вопросу. Наткнулся я на видео, где парень рассказывал, что в Xamarin Studio есть фича, якобы дающая возможность скомпилить код и затем...
Программирование Android Клиент и сервер
У меня есть TCP клиент андроид и сервер Qt. На сервер все данные нормально приходят но на клиент ответ от сервера(текстовое сообщение) не приходит. Подскажите как исправить ситуацию? Вот код клиента...
Программирование Android Не изменяется текст в TextView http://www.cyberforum.ru/android-dev/thread1714529.html
...А возможно беда в чем - то другом Собственно простецкая программа. Не могу и проверить на работоспособность, т.к все хорошо, но при нажатии на кнопку, ничего не меняется. ну и говно-код...
Программирование Android Вытащить текст из org.jsoup.nodes.Document В процессе работы возникла необходимость вытащить из HTML-страницы русские названия и цифры - по факту, то, что отображается на сайте (если конкретнее, то названия фильмов, места и время, когда они... подробнее

Показать сообщение отдельно
Antarit
0 / 0 / 0
Регистрация: 03.08.2014
Сообщений: 9

Работают ли Listener в абстрактной родительской Activity? - Программирование Android

18.04.2016, 16:58. Просмотров 214. Ответов 2
Метки (Все метки)

Ситуация следующая. Я захотел сделать NavigationView с DrawerLayout вшитыми в Activity, которое я сделал abstract, оно реализует интерфейс OnNavigationItemSelectedListener. Так вот не вкурю в чем прикол, если убрать abstract добавить его в манифест и вызвать, то навигация работает, я могу перейти в любое из 3х активити (их просто пока 3, и как бы раз так мало то навигация такая хитрая не нужна, но я в дальнейшем планирую добавить еще функционал и тогда навигация будет очень даже кстати). А вот делая его абстрактным и наследуясь от него, NavigationView вызывается, но клики по нему его только закрывают и не обрабатываются? подскажите в чем может быть дело, или как по другому сделать одинаковый NavigationView с одинаковой обработкой кликов не дублируя код во всех активити...

Вот собственно код этого хитроумно работающего и отлынивающего activity
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
package antarit.dietgen.activities;
 
import android.content.Intent;
import android.support.design.widget.NavigationView;
import android.support.design.widget.Snackbar;
import android.support.v4.content.ContextCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
 
import antarit.dietgen.R;
 
public abstract class BaseActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener{
 
    private View activityContent;
    private DrawerLayout drawerLayout;
    private NavigationView navigationView;
 
    @Override
    protected void onCreate (Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.base_activity);
        View rootView = getWindow().getDecorView();
        drawerLayout = (DrawerLayout) rootView.findViewById(R.id.base_drawer_layout);
        navigationView = (NavigationView) drawerLayout.findViewById(R.id.base_navigation_view);
        if (navigationView != null) {
            navigationView.setNavigationItemSelectedListener(this);
        }
    }
 
    @Override
    public View findViewById(int resId){
        return getActivityContent().findViewById(resId);
    }
 
    public void setActivityContent(int resId){
        LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE);
        activityContent = inflater.inflate(resId, drawerLayout, false);
        drawerLayout.addView(activityContent);
    }
 
    public View getActivityContent(){
        return this.activityContent;
    }
 
    @Override
    public boolean onNavigationItemSelected(MenuItem item) {
        switch (item.getItemId()){
            case R.id.nav_diets:
                item.setChecked(true);
                drawerLayout.closeDrawers();
                startActivity(new Intent(this, DietsActivity.class));
                break;
            case R.id.nav_products:
                item.setChecked(true);
                drawerLayout.closeDrawers();
                startActivity(new Intent(this, FoodProductsActivity.class));
                break;
            case R.id.nav_users:
                item.setChecked(true);
                drawerLayout.closeDrawers();
                startActivity(new Intent(this, UsersActivity.class));
                break;
            default:
                drawerLayout.closeDrawers();
                break;
        }
        return true;
    }
 
    public void processException (String exceptionMessage) {
        Snackbar snackbar = Snackbar.make(getActivityContent(), exceptionMessage, Snackbar.LENGTH_LONG);
        View snackBarView = snackbar.getView();
        snackBarView.setBackgroundColor(ContextCompat.getColor(this, R.color.red));
        snackbar.show();
    }
}
P.S. Ах да не обращайте внимание на снэкбар, я его просто запихнул в это же активити так как в 2х активити я обрабатываю исключения и он их вывовит на экран, а все мои активити я унаследовал от этого ради навигации и решил на него же скинуть и эту "обработку исключений"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru