Android studio вылетает activity

Приложение вылетает при нажатии кнопки — Android Studio

Я пытаюсь сделать приложение, которое имеет несколько функций, основанных на функциях веб-сайта, который у меня уже есть. В основном я создаю приложение-компаньон. При этом приложение вылетает, когда я нажимаю кнопку на главной странице, чтобы запустить функцию. Я искал в интернете, пробуя каждое найденное мной решение, но пока ни одно из них не сработало. Странно то, что он работает до тех пор, пока нет дополнительного кода, кроме кода, сгенерированного при создании класса.

Вот моя основная деятельность:

И один из классов, которые я называю этой аварией:

Вот ошибка logcat:

Любая помощь будет принята с благодарностью. Во время сборки никаких ошибок не возникает, поэтому я представляю, что это где-то в моем коде . я просто не могу найти его. Спасибо

2 ответа

Есть несколько проблем с вашим кодом. Прежде всего

Это должны быть первые две строки onCreate() . setContentView() создает объекты представления, поэтому вы не можете получить доступ к любому из них до тех пор, пока не вызовете этот метод. Это также означает, что вы не можете инициализировать переменные поля в строке, как вы это делаете с:

Вместо этого вы должны сделать это внутри onCreate() . Вы делаете все это правильно в MainActivity . Используйте это как руководство.

Вы также должны изменить WebActivity на

Вы не должны расширять MainActivity .

Этот код является проблемой, вы должны объявить веб-просмотр как

И установить его значение после setContentView, как это

Потому что setContentView будет раздувать макет, и вы не сможете найти представление с помощью findViewById до того, как макет раздувается. и весь ваш код для настройки веб-просмотра должен быть ниже кода для поиска веб-просмотра

Источник

Приложение Android Studio вылетает на реальном устройстве, но работает на эмуляторе

Я начал использовать Android Studio несколько недель назад. Я работал над приложением с обычным экраном входа и на эмуляторе все работает отлично. Но если я попытаюсь запустить приложение на своем Samsung Galaxy S7 Edge (Android 7.0), приложение мгновенно вылетает.

Я эмулировал Nexus 5 с API 23, когда я пробовал его с эмулированным пикселем с API 24, эмулятор также зависал. Таким образом, я думаю, что проблема зависит от версии Android?

Logcat (я уменьшил все изображения, которые я использую, теперь это мой новый Logcat):

Я также попробовал это с другим моим реальным устройством (Samsung GT-I9300 с Android 5.1.1, API 22). MainActivity загружается, но без фонового изображения, и, если я пытаюсь войти, приложение вылетает.

Мои SDK Tools имеют все самые новые версии

XML-файл для MainActivity (LoginActivity):

Как я уже говорил, я новичок в Android Studio, и меня это раздражает.

Решено . Изменение размера изображения решило проблему. Я использовал предложения из этой ссылки, чтобы уменьшить разрешение моих фоновых файлов. Теперь все работает как шарм!

4 ответа

Вы упоминаете, что используете изображение с размерами 1500 x 2668 в этот комментарий. Как показано в logcat, Android использует BitmapFactory для надувания этого изображения, а растровые изображения занимают память в зависимости от размеров изображения. В вашем случае это много памяти, больше, чем устройство имеет для вашего приложения, то есть OutOfMemoryException .

Читайте также:  Поисковик гугл хром для андроид

Уменьшите размеры @drawable/loginbg настолько, насколько это возможно, без ущерба для качества. Я бы рекомендовал прочитать о том, как поддерживать несколько размеров экрана, используя изображения разных размеров: https: //developer.android.com/guide/practices/screens_support.html

Согласна с ответом Дода, но я хочу немного его расширить. Если вам не нужна прозрачность, используйте JPG, а при создании растровых изображений выберите параметр, который не требует прозрачности и даже меньшего числа битов.

Источник

Android Studio принудительно закрывается

У меня хорошая проблема с Android Studio. Первоначально я использовал eclipse для разработки приложения для Android, но eclipse отображал забавные вещи, такие как удаление всех моих кодов и в большинстве случаев сбои, поэтому я решил попробовать Android Studio.

Сейчас я использую студию Android, но всякий раз, когда я открываю операцию, чтобы начать вводить код, IDE принудительно выключается. Первоначально я бы сказал, что это происходит, когда в вашем коде есть ошибка, потому что у меня был случай, когда IDE отключилась, был исправлен путем исправления ошибок. Но теперь все коды верны, и когда я устанавливаю на эмулятор, он устанавливается правильно.

Но всякий раз, когда я открываю Activity и начинаю набирать текст, Android Studio выключается. Я пытался ответить на аналогичный вопрос, но не нашел ничего подходящего. Пожалуйста, мне нужна ваша помощь, потому что у меня много проектов с дедлайнами, и такое поведение AS сводит меня с ума .. Спасибо

2 ответа

Спасибо всем, наконец, я получил решение проблемы выключения. Мне пришлось создать все используемые Activity из AS и скопировать коды в каждый созданный файл. Сначала я скопировал все действия, ресурсы и манифест, которые я создал в eclipse, и вставил их в AS. Я предполагаю, что AS не выполняет автоматическое обновление, и по этой причине у него нет ссылки на вставленные файлы в памяти, что приводит к сбою.

В Android Studio может быть проблема с памятью. Я рекомендую вам закрыть все приложения, потребляющие тяжелую память, такие как Chrome и т. Д., Чтобы завершить работу. Надеюсь, это поможет.

Источник

Ошибка в Android studio, что делать?

NullPointerException: Attempt to invoke virtual method ‘android.text.Editable android.widget.EditText.getText()’ on a null object reference

1)Это ошибка не в андроид студио а в коде
2)android.widget.EditText.getText() возможно не инициализирован но это не точно, обратите внимание на 34 строку, а так нужен код самой активити что-бы точно сказать

hottabb, далее, код URL url = new URL(myURL);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(10000);
conn.setConnectTimeout(15000);
conn.setRequestMethod(«POST»);
conn.setRequestProperty(«Connection», «Keep-Alive»);
conn.setRequestProperty(«Content-Type»,»application/x-www-form-urlencoded»);
conn.setRequestProperty(«Content-Length», «» + Integer.toString(parammetrs.getBytes().length));
conn.setDoOutput(true);
conn.setDoInput(true);

Что это такое? Используйте библиотеку какую нибудь

First_activity:
package com.hottabb.aquaprofi.aquaprofi;

import android.app.DialogFragment;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class FirstActivity extends AppCompatActivity implements View.OnClickListener <

DialogFragment exitdlg;
private Zayavka Zayavka;

@Override
protected void onCreate(Bundle savedInstanceState) <
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_first);

Zayavka = new Zayavka( this );

Button Zav = (Button) findViewById(R.id.Zav);
Zav.setOnClickListener(new View.OnClickListener() <
@Override
public void onClick(View v) <
Zayavka.show();
>
>);

exitdlg = new DialogExit();
>

@Override
public void onClick(View v) <
switch (v.getId()) <
case R.id.Zav:
Intent intent = new Intent(this, Zayavka.class);
startActivity(intent);
break;
case R.id.exitBtn:
exitdlg.show(getFragmentManager(), «exitdlg»);
break;
default:
break;
>

>
zayavka.java:
package com.hottabb.aquaprofi.aquaprofi;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.os.AsyncTask;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

Читайте также:  The broken sword android

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

public class Zayavka implements OnClickListener <

private EditText txtnumber;
private EditText txtadres;
private EditText txtzayavka;
private Button otpravka_btn;
private Button cancel_btn;
private Dialog dialog;
private Activity activity;
String number = txtnumber.getText().toString();
String address = txtadres.getText().toString();
String zayavka = txtzayavka.getText().toString();

public Zayavka( Activity activity ) <
this.activity = activity;
init();
>

@SuppressLint(«ResourceType»)
private void init() <
LayoutInflater inflater = LayoutInflater.from( this.activity );
View layout = inflater.inflate(R.layout.zayavka, null);

txtnumber = (EditText) layout.findViewById( R.id.txtnumber );
txtadres = (EditText) layout.findViewById( R.id.txtadres );
txtzayavka = (EditText) layout.findViewById( R.id.txtzayavka );
otpravka_btn = (Button) layout.findViewById( R.id.otpravka_btn);
otpravka_btn.setOnClickListener( this );
cancel_btn = (Button) layout.findViewById( R.id.cancel_btn );
cancel_btn.setOnClickListener( this );

AlertDialog.Builder builder = new AlertDialog.Builder( this.activity );
builder.setView(layout).setTitle(«Создание заявки»);

public void show() <
dialog.show();
>

@Override
public void onClick(View v) <
switch (v.getId()) <
case R.id.otpravka_btn:
try <

> catch (Exception e) <

// OkHttpClient client = new OkHttpClient();
// String json = » <\n" +
// » \»number\»: ,\n» +
// txtnumber+
// » \»address\»: ,\n» +
// txtadres+
// » \»zayavka\»: ,\n» +
// txtzayavka+
// «>»;
// RequestBody body = RequestBody.create(MediaType.parse(«application/json; charset=utf-8»), json);
// Request request = new Request.Builder()
// .url(«hottabb.byethost24.com/aquaprofi.php»)
// .post(body)
// .build();
// try <
// Response response = client.newCall(request).execute();
// > catch (IOException e) <
// e.printStackTrace();
// >
dialog.dismiss();
break;
case R.id.cancel_btn:
dialog.cancel();//отмена диалогового окна
break;
default:
break;
>

@SuppressLint(«StaticFieldLeak»)
public class SendData extends AsyncTask <

String resultString = null;

@Override
protected void onPreExecute() <
super.onPreExecute();
>

@Override
protected Void doInBackground(Void. params) <
try <

String parammetrs = «number=»+number+»&address=»+address+»&zayavka=»+zayavka;
byte[] data = null;
InputStream is = null;

try <
URL url = new URL(myURL);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(10000);
conn.setConnectTimeout(15000);
conn.setRequestMethod(«POST»);
conn.setRequestProperty(«Connection», «Keep-Alive»);
conn.setRequestProperty(«Content-Type»,»application/x-www-form-urlencoded»);
conn.setRequestProperty(«Content-Length», «» + Integer.toString(parammetrs.getBytes().length));
conn.setDoOutput(true);
conn.setDoInput(true);

// конвертируем передаваемую строку в UTF-8
data = parammetrs.getBytes(«UTF-8»);

OutputStream os = conn.getOutputStream();

// передаем данные на сервер
os.write(data);
os.flush();
os.close();
data = null;
conn.connect();
int responseCode= conn.getResponseCode();

// передаем ответ сервер
ByteArrayOutputStream baos = new ByteArrayOutputStream();

if (responseCode == 200) < // Если все ОК (ответ 200)
is = conn.getInputStream();

byte[] buffer = new byte[8192]; // размер буфера

// Далее так читаем ответ
int bytesRead;

Источник

Устранение неполадок Android Studio¶

Потеряно хранилище ключей¶

Если вы используете одно и то же хранилище ключей при обновлении AndroidAPS, вам не нужно деинсталлировать предыдущую версию на смартфоне. Поэтому рекомендуется хранилище ключей размещать в надежном месте.

На случай, если вы не можете найти свое старое хранилище ключей, выполните следующие действия:

  1. Экспорт настроек на вашем телефоне.
  2. Скопируйте настройки вашего телефона во внешнее местоположение (напр. ваш компьютер, служба облачного хранения. ).
  3. Убедитесь, что файл параметров “Параметры AndroidAPS” сохранен.
  4. Сгенерируйте подписанный apk новой версии, как описано на странице обновления ` _.
  5. Деинсталлируйте предыдущую версию AAPS на вашем телефоне.
  6. Установите новую версию AAPS на свой телефон.
  7. Импортируйте настройки — если не можете найти их на вашем телефоне, скопируйте их из внешнего хранилища.
  8. Продолжайте пользоваться циклом.

Предупреждение компилятора Kotlin¶

Если сборка завершена успешно, но вы получаете предупреждения компилятора Kotlin, просто проигнорируйте эти предупреждения.

Приложение успешно построено и может быть перенесено на телефон.

Ключ создан с ошибками¶

При создании нового хранилища ключей для построения подписанного APK в Windows может появиться следующее сообщение об ошибке

Это, кажется, ошибка в Android Studio 3.5.1 и в среде Java в Windows. Ключ создается правильно, но рекомендация выводится как ошибка. В настоящее время это можно игнорировать.

Не удалось загрузить… / Работа оффлайн¶

Если вы получите подобное сообщение об ошибке

убедитесь, что ‘Автономная работа’ выключена.

Ошибка: buildOutput.apkData не может быть пустым¶

Иногда появляется сообщение об ошибке при компоновке apk

Ошибки при сборке APK.

Читайте также:  Часы аналоги эппл вотч для андроид

Ошибка: buildOutput.apkData не может быть пустым

Эта известная ошибка в Android Studio 3.5 и, вероятно, она не будет исправлена до Android Studio 3.6. Есть три варианта:

  1. Вручную удалите три папки компоновки (обычная “сборка”, папка компоновки в “app” и папка компоновки в “wear”) и снова сгенерируйте подписанный apk.
  2. Установите папку назначения в папку проекта, а не в папку приложения, как описано в этом видео `_.
  3. Измените папку назначения apk (другое расположение).

Не удается запустить демон процесс¶

Если вы видите подобное сообщение об ошибке, вы, вероятно, используете ОС Windows 10, 32-bit. Она не поддерживается Android Studio 3.5.1 и выше. В Windows 10 следовать использовать 64-битную операционную систему.

В интернете много руководств, как определить, у вас 32-или 64-битная ОС- например ” это ` _.

Нет данных CGM мониторинга¶

  • В случае, если вы используете xDrip+: идентифицируйте ресивер, как описано в настройках xDrip+ `_.

ContextEdit. * In case you are using patched Dexcom G6 app: This app is outdated. Use BYODA instead.

Неодобренные изменения¶

Если вы получите сообщение об ошибке, как это

Вариант 1 — Проверить установку git¶

  • возможно, git установлен неправильно (должен быть доступен по всему миру)
  • после установки Git в Windows и, нужно перезапустить компьютер или хотя бы раз выйти и снова войти в систему, чтобы сделать git глобально доступным
  • Проверьте установку git
  • Если на вашем компьютере не отображается версия gti, но git установлен, убедитесь, что Android Studio знает, где находится `git. /Installing-AndroidAPS/git-install.html#set-git-path-in-android-studio>`_ на своем компьютере.

Вариант 2 — Перезагрузка исходного кода¶

  • В Android Studio выберите VCS -> GIT -> Сбросить HEAD

Вариант 3 — проверить наличие обновлений¶

  • Скопируйте «git checkout –» в буфер обмена (без кавычек)
  • Переключитесь на терминал в Android Studio (слева с нижней стороны окна Android Studio)
  • Вставьте скопированный текст и нажмите ввод

Приложение не установлено¶

  • Убедитесь, что вы передали файл «full-release.apk» на ваш телефон.
  • Если на вашем телефоне появилось сообщение “приложение не установлено”, то выполните следующее:
  1. Экспортируйте параметры (в версии AAPS, уже установленной на телефоне)
  2. Удалите AAPS с телефона.
  3. Включите режим полета и выключите Bluetooth.
  4. Установите новую версию («app-full-release.apk»)
  5. Импортируйте настройки
  6. Снова включите Bluetooth и отключите режим самолета

Приложение установлено, но старая версия¶

Если вы успешно построили приложение, перенесли его на телефон и установили его, но номер версии остается прежним, то вы могли пропустить шаг обновления update your local copy.

Ничего из вышеперечисленного не сработало¶

Если вышеперечисленные советы не помогли попробуйте начать сборку приложения с нуля:

  1. Экспортируйте параметры (в версии AAPS, уже установленной на телефоне)
  2. Подготовьте пароль ключа и пароль хранилища. В случае, если вы забыле пароли, вы можете попытаться найти их в файлах проекта, как описано здесь ` _. Или просто создайте новый файл хранения ключей.
  3. Постройте приложение с нуля, как описано здесь.
  4. Когда вы успешно собрали APK, удалите существующее приложение с телефона, перенесите новое приложение на ваш телефон и установите.
  5. Импортируйте настройки

Сценарий худшего варианта¶

Если даже создание приложения с нуля не решает проблему, попробуйте полностью удалить Android Studio. Некоторые пользователи сообщили, что это решило проблему.

** Обязательно деинсталлируйте все файлы, связанные с Android Studio. * * Если вы не полностью удалите Android Studio со всеми скрытыми файлами, деинсталляция может привести к новым проблемам, а не к решению существующих. Руководства по полной деинсталляции можно найти в Интернете, напр. .

Установите Android Studio с нуля, как описано ниже: `_ и не обновляйте gradle.

© Copyright AndroidAPS community Revision e46f8d39 .

Источник

Оцените статью