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

Null при вызове метода из другого класса - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Background меняет height компонента http://www.cyberforum.ru/android-dev/thread1815699.html
Привет. У меня есть toolbar (из android.support.v7.widget.Toolbar). У него android:layout_height="wrap_content" Я ставлю на фон картинку бОльшую чем получается wrap_content, и toolbar...
Программирование Android Не видны программно созданные файлы с компа не видны программно созданные на телефоне файлы, как поправить? http://www.cyberforum.ru/android-dev/thread1815595.html
Как работает внедрение зависимостей, и зачем нужно его использовать? Программирование Android
Как работает внедрение зависимостей? И в каких ситуациях, зачем нужно его использовать?Например если я объявил поле как @Inject то как к нему потом обращаться как его инициализировать можете подробно...
Потоки не работают параллельно Программирование Android
Написал я такой кусок кода (все это внутри класса MainActivity): class CalcFiveSecClass extends AsyncTask<Void, Void, String> { @Override protected String...
Программирование Android Firebase новичку http://www.cyberforum.ru/android-dev/thread1815086.html
Подскажите русскоязычный источник для изучения Firebase. Зарание спасибо
Программирование Android Как обратиться к элементу Drawer Activity? Всем доброго времени суток. Я начинаю изучать Android и возникла проблема. Я создал проект с Drawer Activity. В шапке шторки планирую разместить информацию о гаджете. И хочу чтобы при запуске... подробнее

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

Null при вызове метода из другого класса - Программирование Android

29.09.2016, 14:09. Просмотров 235. Ответов 6
Метки (Все метки)

Суть такая. Я создал приложение с двумя активити NavigationView (через стандартный конструктор Adroid Studio). В шапку NavView я вывожу информацию об устройстве (есть два метода которые выводят инфу к текствью в шапке). Мне нужно сделать так, чтобы при переходе на другие активити информация в шапке обновлялась из метода первого вью. Но выкидывается исключение NullPointer. В чем может быть проблема? Я только начинаю осваивать программирование, поэтому могу не понимать некоторых основ.

Кусок кода главного активити:
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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
public class Main extends AppCompatActivity
        implements NavigationView.OnNavigationItemSelectedListener, SensorEventListener{
 
 
    TextView drawerItemModel;
    TextView textBatteryTemperature;
    TextView textBatteryInfo;
    TextView tvHeaderModel;
    TextView tvHeaderOnline;
    TextView tvHeaderPO;
 
    static TextView textBtrInfo;
    static TextView textChrgInfo;
 
    SensorManager mSensorManager;
    Sensor mProximity;
    Timer mTimer;
 
 
    @RequiresApi(api = Build.VERSION_CODES.KITKAT_WATCH)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
 
 
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
 
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
        drawer.setDrawerListener(toggle);
        toggle.syncState();
 
        NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
        View navHeaderMain = navigationView.inflateHeaderView(R.layout.nav_header_main); //программно подключаю шапку NavView
        drawerItemModel = (TextView) navHeaderMain.findViewById(R.id.drawerHdrItemModel); //сюда буду выводить инфу
        tvHeaderModel = (TextView) navHeaderMain.findViewById(R.id.tvHeaderModel);  //сюда буду выводить инфу
        tvHeaderPO = (TextView) navHeaderMain.findViewById(R.id.tvHeaderPO);  //сюда буду выводить инфу
        tvHeaderOnline = (TextView) navHeaderMain.findViewById(R.id.tvHeaderOnline);  //сюда буду выводить инфу
        navigationView.setNavigationItemSelectedListener(this);
    /*Конец родного кода*/
 
         /*Начало моего кода*/
        mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);// Получаем менеджер сенсоров
        mProximity = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);// Получаем датчик приближения
        textBtrInfo = (TextView) findViewById(R.id.textBtrInfo);
        textChrgInfo = (TextView) findViewById(R.id.textChrgInfo);
        textBatteryInfo = (TextView) findViewById(R.id.textBatteryInfo);
        textBatteryTemperature = (TextView) findViewById(R.id.textBatteryTemperature);
        textBatteryInfo.setText("Заряд батареи");
        textBatteryTemperature.setText("Температура батареи");
 
        //Выводим список датчиков
        LinearLayout linLayout = (LinearLayout) findViewById(R.id.linLayout);
        LayoutInflater ltInflater = getLayoutInflater();
 
        List<Sensor> sensList = mSensorManager.getSensorList(Sensor.TYPE_ALL);
        for (int i = 0; i < sensList.size(); i++) {
            View item = ltInflater.inflate(R.layout.sens_item, linLayout, false); //Создаем вью
            TextView tvName = (TextView) item.findViewById(R.id.tvName);    //Находим ТекстВью для имени датчика
            tvName.setText(String.valueOf(sensList.get(i).getName()));  //Оригинальное название датчика
            TextView tvPosition = (TextView) item.findViewById(R.id.tvPosition);    //Находим ТекстВью для номера сенсора
            tvPosition.setText(i+1 + ": ");  //Выводим номер сенсора
            TextView tvSalary = (TextView) item.findViewById(R.id.tvSalary);    //Находим ТекстВью для русского имени
            tvSalary.setText(checkMap(String.valueOf(sensList.get(i).getStringType()))); //Описание на русском
            TextView tvOrigName = (TextView) item.findViewById(R.id.tvOrigName);    //Находим ТекстВью для оригинального имени
            tvOrigName.setText(String.valueOf(sensList.get(i).getStringType()));   //Оригинальное имя
 
            item.getLayoutParams().width = LinearLayout.LayoutParams.MATCH_PARENT;
            linLayout.addView(item);
        }
 
        /*Конец моего кода*/
 
 
   protected void onResume() {
        super.onResume();
        mSensorManager.registerListener(this,mProximity,SensorManager.SENSOR_DELAY_NORMAL);// Регистрируем слушатель
        textChrgInfo.setText(getBatteryLevel(this));
        textBtrInfo.setText(getBatteryTemperatute(this));
        drawHeaderUpdate();
    }
 
 
 
    public void drawHeaderUpdate(){
        mTimer = new Timer();
        mTimer.schedule(new TimerTask() {
            @Override
            public void run() {
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        onlineStatus();
                    }
                });
            }
        },0,1000);
 
        drawerItemModel.setText(Build.MANUFACTURER.toUpperCase().toString()); //вывожу инфу в шапку, здесь выкидывается исключение
        tvHeaderModel.setText(Build.MODEL.toUpperCase().toString()); //вывожу инфу в шапку, здесь выкидывается исключение
        tvHeaderPO.setText(Build.VERSION.RELEASE.toUpperCase().toString()); //вывожу инфу в шапку, здесь выкидывается исключение
 
    }
 
    /*Метод статуса онлайн*/
    public void onlineStatus(){
        tvHeaderOnline.setText(isOnline(this) ? " Online" : " Offline ");
    }
 
    }
B код второго активити:
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
public class SensDiag extends AppCompatActivity
        implements NavigationView.OnNavigationItemSelectedListener {
 
    Main main;
    TextView drawerItemModel;
    TextView tvHeaderModel;
    TextView tvHeaderOnline;
    TextView tvHeaderPO;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
 
        setContentView(R.layout.activity_sens_diag);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
 
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
                this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
        drawer.setDrawerListener(toggle);
        toggle.syncState();
 
        NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
        View navHeaderMain = navigationView.inflateHeaderView(R.layout.nav_header_main);
        drawerItemModel = (TextView) navHeaderMain.findViewById(R.id.drawerHdrItemModel);
        tvHeaderModel = (TextView) navHeaderMain.findViewById(R.id.tvHeaderModel);
        tvHeaderPO = (TextView) navHeaderMain.findViewById(R.id.tvHeaderPO);
        tvHeaderOnline = (TextView) navHeaderMain.findViewById(R.id.tvHeaderOnline);
        navigationView.setNavigationItemSelectedListener(this);
    }
 
    @Override
    public void onBackPressed() {
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        if (drawer.isDrawerOpen(GravityCompat.START)) {
            drawer.closeDrawer(GravityCompat.START);
        } else {
            super.onBackPressed();
        }
    }
 
 
 
    @SuppressWarnings("StatementWithEmptyBody")
    @Override
    public boolean onNavigationItemSelected(MenuItem item) {
        Intent intent;
        int id = item.getItemId();
 
        if (id == R.id.nav_diag) {
            intent = new Intent(this, SensDiag.class);
            startActivity(intent);
        } else if (id == R.id.nav_mTouch) {
            intent = new Intent(this, SensDiag.class);
            startActivity(intent);
        } else if (id == R.id.nav_slideshow) {
 
        } else if (id == R.id.nav_manage) {
 
        } else if (id == R.id.nav_share) {
 
        } else if (id == R.id.nav_send) {
 
        } else if (id == R.id.nav_main){
            intent = new Intent(this, Main.class);
            startActivity(intent);
        }
        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        drawer.closeDrawer(GravityCompat.START);
        return true;
    }
 
    @Override
    protected void onResume() {
        super.onResume();
        main = new Main(); // экземпляр первого класса
        main.drawHeaderUpdate(); // вызываю метод в котором выкидывается Null
    }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru