Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
5 / 5 / 3
Регистрация: 29.01.2015
Сообщений: 189
1

Крэшится при запуске. Небольшой и простой код

24.01.2016, 14:24. Показов 1120. Ответов 23
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Приложение крэшится при запуске. Что я сделал не так?
Также, пользуясь случаем, хочу узнать - как запросить у пользователя при включении приложухи включить bluetooth? Я закомментировал REQUEST_ENABLE_BT , т.к. не понимаю к чему это обращается


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
import android.bluetooth.*;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.Toast;
 
public class MainActivity extends AppCompatActivity {
 
    BluetoothAdapter bluetooth = BluetoothAdapter.getDefaultAdapter();
    TextView TxtNameDevice = (TextView)findViewById(R.id.TxtNameDevice);
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
 
    protected void onStart(){
        super.onStart();
 
      if(bluetooth.isEnabled()){
 
        //Bluetooth включен.
      }else{
 
        //Bluetooth выключен. Предложим включить
        Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
        //startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
      }
 
        //Всплывающее сообщение о доступности Bluetooth
      String status;
      if(bluetooth.isEnabled()){
 
        String mydeviceaddress = bluetooth.getAddress();
        String mydevicename = bluetooth.getName();
        status = mydevicename + " : " + mydeviceaddress;
        TxtNameDevice.setText(mydevicename);
 
      }else{
 
        status = "Bluetooth выключен!";
      }
      Toast.makeText(this,status,Toast.LENGTH_LONG).show();
 
    }
 
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.01.2016, 14:24
Ответы с готовыми решениями:

Небольшой обман при запуске макросов
Есть файл xls с кучей макросов, которые, естественно, запаролены. Предположим, что макросы работают...

Посоветуйте небольшой, простой фреймворк
Здравствуйте, так как сам я не php программист и в данном вопросе слаб, то посоветуйте несложный...

Как проще всего создать простой сайт с небольшой БД
Мне вот сейчас руководитель скинул архив сайта ПОРТАЛА( кто то уже пытался делать и не стал...

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

23
266 / 242 / 96
Регистрация: 11.01.2015
Сообщений: 673
24.01.2016, 15:14 2
AlexRu18, нужно лог шибки показывать. У тебя походу проблема с тем, что ты ищешь view на не подключенной разметке. Попробуй так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
public class MainActivity extends AppCompatActivity {
 
    BluetoothAdapter bluetooth = BluetoothAdapter.getDefaultAdapter();
    TextView txtNameDevice;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        txtNameDevice = (TextView)findViewById(R.id.TxtNameDevice);
    }
1
349 / 240 / 34
Регистрация: 16.01.2010
Сообщений: 766
24.01.2016, 15:18 3
ТС, OnCreate() как думаете для чего? Вот как раз что бы интерфейс "раздуть". Так что как минимум в этом ошибка есть.
ТС, не представляете, до какой степени, лениво рыться в чужом коде. Это только препод может - у него большой опыт)
P.S Не забывайте выкладывать логи. Это помогает.
0
5 / 5 / 3
Регистрация: 29.01.2015
Сообщений: 189
24.01.2016, 15:50  [ТС] 4
Спасибо, чёт я затупок.

При выключенном Bluetooth включается.
Я так понимаю он не может показать мне имя устройства и вывести в TextView, но почему?
https://www.cyberforum.ru/atta... 1453639877
При вкл. вылет с логом:

Unable to start activity ComponentInfo{com.alexru18.bluetoothchat/com.alexru18.bluetoothchat.MainActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2185)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2210)
at android.app.ActivityThread.access$600(ActivityThread.java:142)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1208)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4931)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:558)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at com.alexru18.bluetoothchat.MainActivity.onStart(MainActivity.java:45)_______________________________
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1163)
at android.app.Activity.performStart(Activity.java:5018)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2210)*
at android.app.ActivityThread.access$600(ActivityThread.java:142)*
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1208)*
at android.os.Handler.dispatchMessage(Handler.java:99)*
at android.os.Looper.loop(Looper.java:137)*
at android.app.ActivityThread.main(ActivityThread.java:4931)*
at java.lang.reflect.Method.invokeNative(Native Method)*
at java.lang.reflect.Method.invoke(Method.java:511)*
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)*
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:558)*
at dalvik.system.NativeStart.main(Native Method)*
0
1605 / 1337 / 291
Регистрация: 25.10.2009
Сообщений: 3,487
Записей в блоге: 2
24.01.2016, 15:51 5
AlexRu18, уже ведь сказали Вам всё.

Цитата Сообщение от AlexRu18 Посмотреть сообщение
TextView TxtNameDevice = (TextView)findViewById(R.id.TxtNameDevice);
заменить на
Java
1
TextView TxtNameDevice;
и добавить
Цитата Сообщение от Mikalai Посмотреть сообщение
txtNameDevice = (TextView)findViewById(R.id.TxtNameDevice);
в onCreate
0
5 / 5 / 3
Регистрация: 29.01.2015
Сообщений: 189
24.01.2016, 16:05  [ТС] 6
Это логично. Я говорю про 2 вызов, для установки текста
0
1605 / 1337 / 291
Регистрация: 25.10.2009
Сообщений: 3,487
Записей в блоге: 2
24.01.2016, 17:07 7
AlexRu18, значит в разметке нет TextView с указанным id
0
5 / 5 / 3
Регистрация: 29.01.2015
Сообщений: 189
24.01.2016, 17:25  [ТС] 8
Цитата Сообщение от YuraAAA Посмотреть сообщение
AlexRu18, значит в разметке нет TextView с указанным id
Если бы не было, то приложение бы продолжало крешится.

При выключенном Bluetooth всё нормально, при включенном крэшится с логом:

Кликните здесь для просмотра всего текста
Крэшится при запуске. Небольшой и простой код


Крэшится при запуске. Небольшой и простой код
0
1605 / 1337 / 291
Регистрация: 25.10.2009
Сообщений: 3,487
Записей в блоге: 2
24.01.2016, 17:30 9
AlexRu18, ещё раз. вызов метода setText у объекта, который null.
0
AlexRu18
24.01.2016, 17:38  [ТС]
  #10

Не по теме:

хоть об стену головой бейся, непонятно что делаю не так.

0
1605 / 1337 / 291
Регистрация: 25.10.2009
Сообщений: 3,487
Записей в блоге: 2
24.01.2016, 17:49 11
AlexRu18, покажите исправленный код
0
349 / 240 / 34
Регистрация: 16.01.2010
Сообщений: 766
24.01.2016, 18:48 12
Видимо, переменная - TxtNameDevice. Не видима в том месте где ей хотя присвоить значение.
И зачем, все в OnStart() пихать? Такая задача?
0
5 / 5 / 3
Регистрация: 29.01.2015
Сообщений: 189
24.01.2016, 21:41  [ТС] 13
Цитата Сообщение от YuraAAA Посмотреть сообщение
исправленный код
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
package com.alexru18.bluetoothchat;
 
import android.bluetooth.*;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.Toast;
 
public class MainActivity extends AppCompatActivity {
 
    BluetoothAdapter bluetooth = BluetoothAdapter.getDefaultAdapter();
    public TextView TxtNameDevice;
 
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        TxtNameDevice = (TextView)findViewById(R.id.TxtNameDevice);
 
    }
 
    protected void onStart(){
        super.onStart();
 
      if(bluetooth.isEnabled()){
 
        //Bluetooth включен.
      }else{
 
        //Bluetooth выключен. Предложим включить
        Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
        //startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
      }
 
        //Всплывающее сообщение о доступности Bluetooth
      String status;
      if(bluetooth.isEnabled()){
 
        String mydeviceaddress = bluetooth.getAddress();
        String mydevicename = bluetooth.getName();
        status = mydevicename + " : " + mydeviceaddress;
        TxtNameDevice.setText(mydevicename);
 
      }else{
 
        status = "Bluetooth выключен!";
      }
      Toast.makeText(this,status,Toast.LENGTH_LONG).show();
 
    }
 
}
и

XML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">
 
    <TextView
        android:id="@+id/TxtNameDevice"
        android:layout_width="match_parent"
        android:layout_height="50dp"/>
 
    <ListView
        android:id="@+id/ListChat"
        android:layout_below="@+id/TxtNameDevice"
        android:layout_width="fill_parent"
        android:layout_height="280dp"/>
......
Добавлено через 1 минуту
Цитата Сообщение от Vladimirys Посмотреть сообщение
И зачем, все в OnStart() пихать? Такая задача?
Я недавно в этой области занимаюсь и многого не знаю, буду признателен за ваш вариант
0
349 / 240 / 34
Регистрация: 16.01.2010
Сообщений: 766
24.01.2016, 22:08 14
Создайте свой метод, в классе. И вызывайте, его. Если нужно именно OnStart() можно вызвать и оттуда. Вообще с системными методами нужно работать осторожно, ибо они не подвластные разработку.
XML
1
2
3
4
5
<ListView
        android:id="@+id/ListChat"
        android:layout_below="@+id/TxtNameDevice"
        android:layout_width="fill_parent"
        android:layout_height="280dp"/>
Вот тут не правильно = android:layout_below="@+id/TxtNameDevice" "@+" быть не должно, ибо ресурс добавлен ранее.
0
5 / 5 / 3
Регистрация: 29.01.2015
Сообщений: 189
24.01.2016, 23:53  [ТС] 15
Всё та же штука..

/* Caused by: java.lang.NullPointerException
at
com.alexru18.bluetoothchat.MainActivity.onStart(MainActivity.java:45) */
0
1605 / 1337 / 291
Регистрация: 25.10.2009
Сообщений: 3,487
Записей в блоге: 2
25.01.2016, 00:00 16
Цитата Сообщение от AlexRu18 Посмотреть сообщение
TxtNameDevice = (TextView)findViewById(R.id.TxtNameDevice);
Сделайте так,
Java
1
2
TxtNameDevice = (TextView)findViewById(R.id.TxtNameDevice);
Log.d("MainActivity", "" + txtNameDevice);
и покажите что выведет
0
5 / 5 / 3
Регистрация: 29.01.2015
Сообщений: 189
25.01.2016, 00:03  [ТС] 17
Крэшится при запуске. Небольшой и простой код
0
1605 / 1337 / 291
Регистрация: 25.10.2009
Сообщений: 3,487
Записей в блоге: 2
25.01.2016, 00:07 18
AlexRu18, тааааааааааааак. Ещё раз код в студию, я сейчас сам в тупик стану. Такое ощущение, что не вызывается onCreate. А лучше проект скиньте, мне уже самому интересно что там такое
0
5 / 5 / 3
Регистрация: 29.01.2015
Сообщений: 189
25.01.2016, 00:09  [ТС] 19
BluetoothChat.zip
0
1605 / 1337 / 291
Регистрация: 25.10.2009
Сообщений: 3,487
Записей в блоге: 2
25.01.2016, 00:15 20
AlexRu18, ну так, дружище, где в activity_main разметке это текстовое поле? Подозреваю, что должно быть
Java
1
setContentView(R.layout.chat_activity);
0
25.01.2016, 00:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.01.2016, 00:15
Помогаю со студенческими работами здесь

Выполнить код при запуске программы
При нажатии на кнопку можно выполнить код таким образом void...

Ошибка при запуске eclipse: исчез код
Добрый вечер. Решила попробовать сделать небольшой проект на Android чтобы в процессе узнать что и...

Код рабочий но при запуске не выдает результата
Помогите пожалуйста. using System; namespace ln_natur { class Program { ...

Mirror's Edge требует код регистрации при запуске
я скачал игру Mirror's Edge всё норм записалось когда включаю её пишит ведити код регистрации . а...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru