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

Программирование Android

Войти
Регистрация
Восстановить пароль
 
 
AlexRu18
2 / 2 / 0
Регистрация: 29.01.2015
Сообщений: 103
#1

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

24.01.2016, 14:24. Просмотров 500. Ответов 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
Добрый вечер. Решила попробовать сделать небольшой проект на Android чтобы в процессе узнать что и как. Идеей проекта выбрала приложение...

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

Ошибка при запуске AsyncTask при нажатии на пункт ActionBar - Программирование Android
Здравствуйте, почему при нажатии на пункт Action Bar'а вылетает ошибка? @Override public boolean onCreateOptionsMenu(Menu menu)...

Небольшой обман при запуске макросов - Visual Basic
Есть файл xls с кучей макросов, которые, естественно, запаролены. Предположим, что макросы работают следующим образом - если в ячейку (1,1)...

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

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

23
Mikalai
261 / 237 / 95
Регистрация: 11.01.2015
Сообщений: 663
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
309 / 206 / 25
Регистрация: 16.01.2010
Сообщений: 590
24.01.2016, 15:18 #3
ТС, OnCreate() как думаете для чего? Вот как раз что бы интерфейс "раздуть". Так что как минимум в этом ошибка есть.
ТС, не представляете, до какой степени, лениво рыться в чужом коде. Это только препод может - у него большой опыт)
P.S Не забывайте выкладывать логи. Это помогает.
0
AlexRu18
2 / 2 / 0
Регистрация: 29.01.2015
Сообщений: 103
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
1577 / 1318 / 271
Регистрация: 25.10.2009
Сообщений: 3,438
Записей в блоге: 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
2 / 2 / 0
Регистрация: 29.01.2015
Сообщений: 103
24.01.2016, 16:05  [ТС] #6
Это логично. Я говорю про 2 вызов, для установки текста
0
YuraAAA
1577 / 1318 / 271
Регистрация: 25.10.2009
Сообщений: 3,438
Записей в блоге: 2
24.01.2016, 17:07 #7
AlexRu18, значит в разметке нет TextView с указанным id
0
AlexRu18
2 / 2 / 0
Регистрация: 29.01.2015
Сообщений: 103
24.01.2016, 17:25  [ТС] #8
Цитата Сообщение от YuraAAA Посмотреть сообщение
AlexRu18, значит в разметке нет TextView с указанным id
Если бы не было, то приложение бы продолжало крешится.

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

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

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

Не по теме:

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

0
YuraAAA
1577 / 1318 / 271
Регистрация: 25.10.2009
Сообщений: 3,438
Записей в блоге: 2
24.01.2016, 17:49 #11
AlexRu18, покажите исправленный код
0
Vladimirys
309 / 206 / 25
Регистрация: 16.01.2010
Сообщений: 590
24.01.2016, 18:48 #12
Видимо, переменная - TxtNameDevice. Не видима в том месте где ей хотя присвоить значение.
И зачем, все в OnStart() пихать? Такая задача?
0
AlexRu18
2 / 2 / 0
Регистрация: 29.01.2015
Сообщений: 103
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
309 / 206 / 25
Регистрация: 16.01.2010
Сообщений: 590
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
2 / 2 / 0
Регистрация: 29.01.2015
Сообщений: 103
24.01.2016, 23:53  [ТС] #15
Всё та же штука..

/* Caused by: java.lang.NullPointerException
at
com.alexru18.bluetoothchat.MainActivity.onStart(MainActivity.java:45) */
0
24.01.2016, 23:53
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.01.2016, 23:53
Привет! Вот еще темы с ответами:

Выполнить код при запуске программы - C++
При нажатии на кнопку можно выполнить код таким образом void MainWindow::on_pushButton_Test_clicked() { this-&gt;ui-&gt;...

Код рабочий но при запуске не выдает результата - C#
Помогите пожалуйста. using System; namespace ln_natur { class Program { public static double log (double x,...

Visual Studio 2015. Выполнить код при запуске - Xamarin
Тривиальная задача, но нигде не могу найти решение. Каким образом можно сделать так, тобы некоторый код выполнялся однократно при запуске...

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


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

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

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