Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
 
AlexRu18
5 / 5 / 3
Регистрация: 29.01.2015
Сообщений: 163
#1

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

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

Приложение крэшится при запуске. Что я сделал не так?
Также, пользуясь случаем, хочу узнать - как запросить у пользователя при включении приложухи включить 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.01.2016, 14:24
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Крэшится при запуске. Небольшой и простой код (Программирование Android):

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

Может кто написать простой код на основе MVP , заранее большое спасибо
Добрый день) Может кто написать коротенький код, в котором генерируется...

Ошибка при запуске AsyncTask при нажатии на пункт ActionBar
Здравствуйте, почему при нажатии на пункт Action Bar'а вылетает ошибка? ...

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

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

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

23
Mikalai
262 / 238 / 95
Регистрация: 11.01.2015
Сообщений: 666
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
Vladimirys
312 / 209 / 27
Регистрация: 16.01.2010
Сообщений: 610
24.01.2016, 15:18 #3
ТС, OnCreate() как думаете для чего? Вот как раз что бы интерфейс "раздуть". Так что как минимум в этом ошибка есть.
ТС, не представляете, до какой степени, лениво рыться в чужом коде. Это только препод может - у него большой опыт)
P.S Не забывайте выкладывать логи. Это помогает.
0
AlexRu18
5 / 5 / 3
Регистрация: 29.01.2015
Сообщений: 163
24.01.2016, 15:50  [ТС] #4
Спасибо, чёт я затупок.

При выключенном Bluetooth включается.
Я так понимаю он не может показать мне имя устройства и вывести в TextView, но почему?
http://www.cyberforum.ru/attachment....1&d=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
YuraAAA
1578 / 1319 / 282
Регистрация: 25.10.2009
Сообщений: 3,436
Записей в блоге: 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
AlexRu18
5 / 5 / 3
Регистрация: 29.01.2015
Сообщений: 163
24.01.2016, 16:05  [ТС] #6
Это логично. Я говорю про 2 вызов, для установки текста
0
YuraAAA
1578 / 1319 / 282
Регистрация: 25.10.2009
Сообщений: 3,436
Записей в блоге: 2
24.01.2016, 17:07 #7
AlexRu18, значит в разметке нет TextView с указанным id
0
AlexRu18
5 / 5 / 3
Регистрация: 29.01.2015
Сообщений: 163
24.01.2016, 17:25  [ТС] #8
Цитата Сообщение от YuraAAA Посмотреть сообщение
AlexRu18, значит в разметке нет TextView с указанным id
Если бы не было, то приложение бы продолжало крешится.

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

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

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

Не по теме:

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

0
YuraAAA
1578 / 1319 / 282
Регистрация: 25.10.2009
Сообщений: 3,436
Записей в блоге: 2
24.01.2016, 17:49 #11
AlexRu18, покажите исправленный код
0
Vladimirys
312 / 209 / 27
Регистрация: 16.01.2010
Сообщений: 610
24.01.2016, 18:48 #12
Видимо, переменная - TxtNameDevice. Не видима в том месте где ей хотя присвоить значение.
И зачем, все в OnStart() пихать? Такая задача?
0
AlexRu18
5 / 5 / 3
Регистрация: 29.01.2015
Сообщений: 163
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
Vladimirys
312 / 209 / 27
Регистрация: 16.01.2010
Сообщений: 610
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
AlexRu18
5 / 5 / 3
Регистрация: 29.01.2015
Сообщений: 163
24.01.2016, 23:53  [ТС] #15
Всё та же штука..

/* Caused by: java.lang.NullPointerException
at
com.alexru18.bluetoothchat.MainActivity.onStart(MainActivity.java:45) */
0
YuraAAA
1578 / 1319 / 282
Регистрация: 25.10.2009
Сообщений: 3,436
Записей в блоге: 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
AlexRu18
5 / 5 / 3
Регистрация: 29.01.2015
Сообщений: 163
25.01.2016, 00:03  [ТС] #17
Крэшится при запуске. Небольшой и простой код
0
YuraAAA
1578 / 1319 / 282
Регистрация: 25.10.2009
Сообщений: 3,436
Записей в блоге: 2
25.01.2016, 00:07 #18
AlexRu18, тааааааааааааак. Ещё раз код в студию, я сейчас сам в тупик стану. Такое ощущение, что не вызывается onCreate. А лучше проект скиньте, мне уже самому интересно что там такое
0
AlexRu18
5 / 5 / 3
Регистрация: 29.01.2015
Сообщений: 163
25.01.2016, 00:09  [ТС] #19
BluetoothChat.zip
0
YuraAAA
1578 / 1319 / 282
Регистрация: 25.10.2009
Сообщений: 3,436
Записей в блоге: 2
25.01.2016, 00:15 #20
AlexRu18, ну так, дружище, где в activity_main разметке это текстовое поле? Подозреваю, что должно быть
Java
1
setContentView(R.layout.chat_activity);
0
25.01.2016, 00:15
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.01.2016, 00:15
Привет! Вот еще темы с решениями:

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

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

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

Получить код возврата при запуске SFX-архива
Всем привет! Есть SFX-архив, созданный в WinRAR. Его запускают через cmd. Как...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru