Re: Переключение между экранами приложения
Считайте, что это просто белый прямоугольник на весь экран.
Все вопросы проплачены кошками - всемирно известными производителями котят
You are not logged in. Please login or register.
Для регистрации на форуме следует написать мне письмо. В ответе я напишу правильный ответ для прохождения регистрации.
Форум Александра Климова → Android → Переключение между экранами приложения
Считайте, что это просто белый прямоугольник на весь экран.
Считайте, что это просто белый прямоугольник на весь экран.
Спасибо, у Вас очень полезный и детально проработанный сайт. Привет вашим котам от моих ).
извиняюсь что не по теме , не знаю в какую написать , в android studio новичек , подскажите , сделал imagebutton , нарисовал ее в mdpi , hdpi , xhdpi , написал код , а она все ровно показывает по ширине не на весь экран , а только наполовину или меньше , на некоторых устройствах с маленьким экраном вообще запределы экрана уходит , подскажите в чем может быть проблема , как сделать кнопку которая будет растягиваться по ширине на весь layout. В андроид студио на макете она на всю ширину layout'a изображается а на реальных устройствах нет.
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.myapplication.MainActivity">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical"
android:weightSum="1"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0">
<ImageButton
android:id="@+id/imageButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:background="@null"
android:onClick="playVideo"
app:srcCompat="@drawable/gotovo" />
</LinearLayout>
</android.support.constraint.ConstraintLayout>
В этом примере просто добавлены TextView над текстовыми полями. Также можете посмотреть на новый компонент http://developer.alexanderklimov.ru/and … layout.php
Подскажите в куске кода
public static final String ACTION_SECOND_ACTIVITY = "ru.site.sherlock.Main2Activity";
public void onClick1(View v) {
Intent questionIntent = new Intent(MainActivity.this, ACTION_SECOND_ACTIVITY);
startActivityForResult(questionIntent, CHOOSE_THIEF);
}
в 3 строке как правильно указать ACTION_SECOND_ACTIVITY ?
ACTION_SECOND_ACTIVITY.class тоже не канает
Подскажите в куске кода
public static final String ACTION_SECOND_ACTIVITY = "ru.site.sherlock.Main2Activity"; public void onClick1(View v) { Intent questionIntent = new Intent(MainActivity.this, ACTION_SECOND_ACTIVITY); startActivityForResult(questionIntent, CHOOSE_THIEF); }
в 3 строке как правильно указать ACTION_SECOND_ACTIVITY ?
ACTION_SECOND_ACTIVITY.class тоже не канает
Ну дык переменная у Вас String, а Вы в нее Activity засунуть пытаетесь. Поймите, код - это команды компилятору, а не просто текст.
Студии сейчас под рукой нет проверить, но, может, сработает?
ACTION_SECOND_ACTIVITY = "ru.site.sherlock.Main2Activity.class";
И, да, оно Вам зачем?
нет не робит
хочу совместить startActivityForResult() и фильтры , или так не бывает ?
Добрый день!
Хочу сделать следующее. В первой активити две textView и кнопка, во второй тоже две textView и кнопка. В первой активити мы заполняем textView и при нажатии кнопки с помощью ArrayList передаем во вторую, где из переданного ArrayList заполняем имеющиеся textView. Затем при нажатии кнопки во второй активити переходим обратно передав данные обратно с помощью Arraylist подобным образом. Подскажите где ошибка при использовании подобного способа? И есть ли другой способ это сделать?
public class MainActivity extends AppCompatActivity {
private static final int REQUEST_CODE = 0;
private static final int NOTIFY_ID = 100;
private EditText text1, text2;
private ArrayList<String> textList = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textList.clear();
}
public void onNextScreenButtonClick(View view) {
text1 = findViewById(R.id.editText);
text2 = findViewById(R.id.editText2);
textList.add(text1.getText().toString());
textList.add(text2.getText().toString());
Intent secondIntent = new Intent(this, SecondActivity.class);
secondIntent.putExtra("TEXT_LIST", textList);
startActivityForResult(secondIntent, REQUEST_CODE);
}
[color=#FF0000]//Используя дебагер, выяснил что ошибка возникает в этом методе[/color]
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
ArrayList<String> inputFromSecondList = (ArrayList<String>) getIntent().getExtras().getSerializable("TEXT_LIST2");
if (requestCode == REQUEST_CODE) {
if (resultCode == RESULT_OK) {
text1.setText(inputFromSecondList.get(0));
text2.setText(inputFromSecondList.get(1));
} else {
text1.setText("");
text2.setText("");
}
}
}
public class SecondActivity extends AppCompatActivity {
private EditText text3, text4;
ArrayList <String> toFirstActivityList = new ArrayList<>();
public final static String TEXT_LISTT = "TEXT_LIST2";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
toFirstActivityList.clear();
text3 = findViewById(R.id.editText3);
text4 = findViewById(R.id.editText4);
ArrayList<String> inputStringList = (ArrayList<String>) getIntent().getExtras().getSerializable("TEXT_LIST");
text3.setText(inputStringList.get(1));
text4.setText(inputStringList.get(0));
}
public void onBackButtonClick(View view) {
toFirstActivityList.add(text3.getText().toString());
toFirstActivityList.add(text4.getText().toString());
Intent toFirstActivityIntent = new Intent();
toFirstActivityIntent.putExtra(TEXT_LISTT, toFirstActivityList);
setResult(RESULT_OK, toFirstActivityIntent);
finish();
}
}
вот логи Error
04-04 11:55:24.807 30458-30458/com.example.megap.notification E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.megap.notification, PID: 30458
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=0, result=-1, data=Intent { (has extras) }} to activity {com.example.megap.notification/com.example.megap.notification.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.io.Serializable android.os.Bundle.getSerializable(java.lang.String)' on a null object reference
at android.app.ActivityThread.deliverResults(ActivityThread.java:4146)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:4189)
at android.app.ActivityThread.-wrap20(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1572)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:163)
at android.app.ActivityThread.main(ActivityThread.java:6205)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.io.Serializable android.os.Bundle.getSerializable(java.lang.String)' on a null object reference
at com.example.megap.notification.MainActivity.onActivityResult(MainActivity.java:50)
at android.app.Activity.dispatchActivityResult(Activity.java:7128)
at android.app.ActivityThread.deliverResults(ActivityThread.java:4142)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:4189)
at android.app.ActivityThread.-wrap20(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1572)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:163)
at android.app.ActivityThread.main(ActivityThread.java:6205)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:904)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)
ArrayList<String> inputFromSecondList = (ArrayList<String>) data.getSerializableExtra
("TEXT_LIST2");
Но у вас программа будет работать хоть и без краха, но логика в приложении хромает и вы будете получать не совсем те данные, которые хотели.
И несколько замечаний - text1, text2,... обычно используют для TextView, для EditText используйте edit1...
Для переменных не используйте приставку to..., это используется для названий методов.
Спасибо за советы. А есть какой-то другой способ выполнить поставленную задачу или это самый распространенный?
Я не знаю, что вы хотите. А что вас не устраивает в этом способе?
Коллеги,я правильно понимаю,что в данном уроке у меня должно быть два экране?
На первом я жму кнопку и появляется второй-О Программе?
Коллеги,я правильно понимаю,что в данном уроке у меня должно быть два экране?
На первом я жму кнопку и появляется второй-О Программе?
Смотря, что Вы понимаете под экраном. У Вас две Activity. На первой Вы нажимаете кнопку, появляется вторая Activity - О Программе.
Подскажите,в Простом переключении на другой экран у меня сразу выводится второе Activity(У Лукоморья Дуд зеленый..).Ошибок никаких нет.В чем может быть дело?
Приветствую, уважаемые.
Прошу, подскажите. У меня не запускается приложение, выдает ошибку:
Error running 'AboutActivity': AboutActivity is not an Activity subclass or alias
Вот код:
Main.Actitvity
package com.example.myapplication;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
// private TextView mHelloTextView;
// private EditText mNameEditText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//mHelloTextView = (TextView) findViewById(R.id.textView);
//mNameEditText = (EditText) findViewById(R.id.editText);
}
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this, AboutActivity.class);
startActivity(intent);
}
AboutActivity
package com.example.myapplication;
import android.app.Activity;
import android.os.Bundle;
public class AboutActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_about);
}
}
AndroidManifest
</activity>
<activity android:name=".AboutActivity"
android:label="@string/about_title">
</activity>
</application>
Где ошибка?
Гугл говорит, что нет класса AboutActivity..., но он же есть.
Спасибо
После получения результата от радиокнопки (кто украл колбасу) если повернуть устройств, текст результата пропадает. Что происходит при смене ориентации экрана? Почему очищается TextView?
Спасибо.
--
Решено! Методы onSaveInstanceState() и onRestoreInstanceState(). Прошу прощения за беспокойство!
Добрый день!
Спасибо за интересные урокы.
Такое ощущение что в студии опять что то поменяли и теперь
Code | Override Methods (Ctrl+O). В диалоговом окне ищем нужный класс, можно набирать на клавиатуре первые символы для быстрого поиска. В созданном методе нужно вызвать метод setContentView(),
Дает не
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_about);
}
А вот это.
@Override
public void setContentView(int layoutResID) {
super.setContentView(layoutResID);
}
Большое спасибо за огромную работу! Делаю первые шаги в андроиде.
Пришлось напрячься, чтобы понять недостающую строчку в activity_main.xml:
android:onClick="onClick"
В статье не упоминается.
В ходе изучения и написания кода, заметил, что выполнять класс-каст, например для объектов TextView и EditText стало необязательно.
Кто-нибудь знает почему это необязательно теперь?
Использую Android SDK API v.28
Большое спасибо за огромную работу! Делаю первые шаги в андроиде.
Пришлось напрячься, чтобы понять недостающую строчку в activity_main.xml:android:onClick="onClick"
В статье не упоминается.
Наоборот, это включает мозги обучающегося
Форум Александра Климова → Android → Переключение между экранами приложения
Powered by PunBB, supported by Informer Technologies, Inc.