Re: Переключение между экранами приложения

Считайте, что это просто белый прямоугольник на весь экран.

Re: Переключение между экранами приложения

alexander.klimoff wrote:

Считайте, что это просто белый прямоугольник на весь экран.

Спасибо, у Вас очень полезный и детально проработанный сайт. Привет вашим котам от моих ).

Re: Переключение между экранами приложения

извиняюсь что не по теме , не знаю в какую написать , в 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>

Re: Переключение между экранами приложения

А как сделать hint сверху в EditText, как у Вас  в примере?
http://i.piccy.info/i9/87365971a1271ae9bf9b175be36e2638/1510253736/16420/1189915/activity13.pnghttp://i.piccy.info/a3/2017-11-09-18-55/i9-11761004/300x251-r/i.gif

Re: Переключение между экранами приложения

В этом примере просто добавлены TextView над текстовыми полями. Также можете посмотреть на новый компонент http://developer.alexanderklimov.ru/and … layout.php

Re: Переключение между экранами приложения

Подскажите в куске кода

    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 тоже не канает

107 (edited by NeferSky 2017-12-19 01:38:48)

Re: Переключение между экранами приложения

permsk wrote:

Подскажите в куске кода

    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";

И, да, оно Вам зачем?

Re: Переключение между экранами приложения

нет не робит

хочу совместить startActivityForResult() и фильтры , или так не бывает ?

109 (edited by megapixxxell 2018-04-04 08:58:24)

Re: Переключение между экранами приложения

Добрый день!
Хочу сделать следующее. В первой активити две 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) 

Re: Переключение между экранами приложения

ArrayList<String> inputFromSecondList = (ArrayList<String>) data.getSerializableExtra
                        ("TEXT_LIST2");

Но у вас программа будет работать хоть и без краха, но логика в приложении хромает и вы будете получать не совсем те данные, которые хотели.
И несколько замечаний - text1, text2,... обычно используют для TextView, для EditText используйте edit1...
Для переменных не используйте приставку to..., это используется для названий методов.

Re: Переключение между экранами приложения

Спасибо за советы. А есть какой-то другой способ выполнить поставленную задачу или это самый распространенный?

Re: Переключение между экранами приложения

Я не знаю, что вы хотите. А что вас не устраивает в этом способе?

Re: Переключение между экранами приложения

Коллеги,я правильно понимаю,что в данном уроке у меня должно быть два экране?
На первом я жму кнопку и появляется второй-О Программе?

Re: Переключение между экранами приложения

Vladimir wrote:

Коллеги,я правильно понимаю,что в данном уроке у меня должно быть два экране?
На первом я жму кнопку и появляется второй-О Программе?

Смотря, что Вы понимаете под экраном. У Вас две Activity. На первой Вы нажимаете кнопку, появляется вторая Activity - О Программе.

Re: Переключение между экранами приложения

Подскажите,в Простом переключении на другой экран у меня сразу выводится второе Activity(У Лукоморья Дуд зеленый..).Ошибок никаких нет.В чем может быть дело?

https://github.com/VladimirMinka/AK/tre … /Lessons_5

Re: Переключение между экранами приложения

Приветствую, уважаемые.

Прошу, подскажите. У меня не запускается приложение, выдает ошибку:
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..., но он же есть.

Спасибо

117 (edited by MonoLife 2018-11-27 11:31:03)

Re: Переключение между экранами приложения

После получения результата от радиокнопки (кто украл колбасу) если повернуть устройств, текст результата пропадает. Что происходит при смене ориентации экрана? Почему очищается TextView?
Спасибо.
--
Решено! Методы onSaveInstanceState() и onRestoreInstanceState(). Прошу прощения за беспокойство!

Re: Переключение между экранами приложения

Добрый день!
Спасибо за интересные урокы.
Такое ощущение что в студии опять что то поменяли и теперь
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);
    }

Re: Переключение между экранами приложения

Большое спасибо за огромную работу! Делаю первые шаги в андроиде.
Пришлось напрячься, чтобы понять недостающую строчку в activity_main.xml:

android:onClick="onClick"

В статье не упоминается.

120 (edited by archi.sova 2020-09-14 02:26:25)

Re: Переключение между экранами приложения

В ходе изучения и написания кода, заметил, что выполнять класс-каст, например для объектов TextView и EditText стало необязательно.
Кто-нибудь знает почему это необязательно теперь?
Использую Android SDK API v.28

Re: Переключение между экранами приложения

nikita1584 wrote:

Большое спасибо за огромную работу! Делаю первые шаги в андроиде.
Пришлось напрячься, чтобы понять недостающую строчку в activity_main.xml:

android:onClick="onClick"

В статье не упоминается.

Наоборот, это включает мозги обучающегося smile