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

тьфу ты нуты.... я дурья башка... я метод создал во второй же активности... все нормально!!! спасибо за быстрый ответ.

P.S. Александр, это я вам писал на почту про тему на 4pda..

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

public class SecondActivity {
    public final static String THIEF="com.example.dmitry.sherlock.THIEF";

    public void onClickRadio (View v){
        Intent answerIntent=new Intent();
        switch (v.getId()){
            case R.id.radio1: answerIntent.putExtra(THIEF,"Ugly dog!");
                break;
            case R.id.radio2:answerIntent.putExtra(THIEF,"Crow");
                break;
            case R.id.radio3:answerIntent.putExtra(THIEF,"Cat");
                break;
            default:
                break;
        }
        setResult(RESULT_OK,answerIntent);
        finish();
    }
}

//////Ошибки:
setResult - cannot resolve method 'setResult(?,android.content.Intent)'
RESULT_OK - cannot resolve symbol 'RESULT_OK'

Подскажите, пожалуйста, почему такие ошибки появились? Перерыл кучу сайтов/гайдов/форумов и ничего не нашел.

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

Потому что эта константа RESULT_OK и метод setResult() относятся к активности, а не к любому классу. А у вас просто класс. Вы забыли добавить extends Activity (или др. варианты)

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

alexander.klimoff wrote:

Потому что эта константа RESULT_OK и метод setResult() относятся к активности, а не к любому классу. А у вас просто класс. Вы забыли добавить extends Activity (или др. варианты)

У Вас в уроке это не указано=)

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

Scorpeex wrote:

У Вас в уроке это не указано=)

Здравствуйте, я ваша тётя.
В первом же листинге статьи об этом говорится.

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

Я немного запутался, создал вторую кнопку и написал код для перехода на новую активность, дальше по уроку идет передача данных между активностями, вы пишите "Переделаем предыдущий пример." так там получается все удалять? Или проще создать новый проект?

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

и как сделать такие текстовые поля?

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

Зачем удалять? Есть кнопка, есть две активности. Просто отредактировать код. В конце концов добавьте вторую кнопку для перехода на третью активность. Больше практикуйтесь.
Какие такие текстовые поля? Обычные поля.

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

Здравствуйте, мне не понятны несколько моментов:
При создании активности через File | New | Activity | Blank Activity у меня создается автоматически две активности, собственно при создании проекта тоже автоматом создается две активности(content_main.xml и activity_main.xml), в обоих этих случаях одну активность не могу редактировать(не в текстовом не в графическом режиме)

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

У вас создаются не две активности, а два файла разметки. Редактировать можете, только надо брать второй файл content.xml, а другой оставьте в покое.

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

Здравствуйте! Я не знаю какой код надо писать на кнопку для открытия второго экрана. Можете помочь?

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

Вы хотите, чтобы я скопировал вам сюда весть текст урока?

38 (edited by Dmitrii 2016-02-17 16:10:13)

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

Здравствуйте, такая проблема:
Второй Activity открывается, и меняется заголовок все хорошо, но он пустой, просто белый лист и никакие элементы, ни цвет ничего не отображается.
В чем может быть проблема?



Разобрался, не тот метод вызывал

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

А каким должен быть цвет и какие элементы вы ожидали увидеть? И что вы для этого сделали?

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

Здравствуйте! Подскажите кто знает, почему методы
public boolean onTouchEvent(MotionEvent event) {
        this.mGestureDetectorCompat.onTouchEvent(event);
        return super.onTouchEvent(event);
    }

    class MyGestureListener extends GestureDetector.SimpleOnGestureListener {
        @Override
        public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
            if (e1.getX() < e2.getX()) {
                Intent intent = new Intent(
                        RatesActivity.this, MainActivity.class);
                startActivity(intent);
            }
            return true;
        }
    }

работают только на пустом экране, если провести по элементам, например, spinner или другим, то активность не меняется. Спасибо!

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

Потому что, метод onTouchEvent() относится к активности и работает только для нее.

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

Тогда почему тоже самое работает на обычном текстовом поле? И как реализовать тоже самое но для работы с любым элементом? С фрагментами еще не знаком.

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

Добрый день! Столкнулся с тем, что если не заполнять формы,  при прописанных getIntent'ах, то приложение не выдает того самого "ЖЫвотное, вам передали дырку от бублика". К слову, "жывотное", как и "дырка", там вообще сереет, a AS говорит, мол, "Variable 'user' initializer '"жывотное"' is redundant".

        String user = "жывотное";
        String gift = "что-то про дырку";
        Intent intent = getIntent();
        user = intent.getStringExtra("username");
        gift = intent.getStringExtra("gift");


А очень хочется! smile Ну, то есть не услышать оскорбления в свой адрес, а заставить все это корректно функционировать.
Проверка через if-else из комментария выше по этой же причине, я полагаю, не проходит.

И есть еще проблема: обновленная AS ругается на user и gift в этом месте:

infoTextView.setText(user + " , вам передали " + gift);


Говорит, мол, "Do not concatenate text displayed with setText. Use resource string with placeholders."
Но тут уже я совсем бессилен - новичок. Пытался гуглить, но мне, как говорится, что в %1$s, что по setHint'у. Не смог заставить работать по-другому.

Бью челом - ткните носом!

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

Проверяйте на пустую строку. Если пустая, то присвоить переменной значение "Животное" и т.д.
В обоих случаях студия не ругается, а предупреждает. Для урока это не существенно, можно не обращать внимания.

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

Добрый день, Александр.

У меня возник вопрос передачи данных в главную активность.
Приложение работает, я могу выбрать кого-либо (Ваську, Песика, Ворону), данные передаются.
Но если я хочу выбрать кого-либо заново или же просто завершить вторую активность, то приложение зависает.

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

Вам нужно разобраться, что вызывает ошибку и обработать её. Код как в примере или вы что-то меняли?

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

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

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

Добрый день.
Возникла следующая проблема: вроде как приложение работает, только вот не выводит обратно на первый экран выбраный на втором экране ответ (будь то песик или же ворона). Выводится "No answer", то есть словно мы ничего не выбрали на втором экране, и никакой информации от него на первый экран не поступило. В чем может быть ошибка?

MainActivity:

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

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    static final private int CHOOSE_THIEF = 0;

    public void OnClick(View view) {
        Intent questionIntent = new Intent(MainActivity.this, SecondActivity.class);
        startActivityForResult(questionIntent, CHOOSE_THIEF);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        TextView infoTextView = (TextView)findViewById(R.id.infoTextView);

        if(requestCode == CHOOSE_THIEF) {
            if(requestCode == RESULT_OK) {
                String thiefName = data.getStringExtra(SecondActivity.THIEF);
                infoTextView.setText(thiefName);
            } else {
                infoTextView.setText("No answer");
            }
        }
    }
}

Second activity:

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

public class SecondActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
    }

    public final static String THIEF = "com.example.nastya.sherlock.THIEF";

    public void onRadioClick(View view) {
        Intent answerIntent = new Intent();

        switch (view.getId()) {
            case R.id.radioDog:
                answerIntent.putExtra(THIEF, "Сраный пёсик");
                break;
            case R.id.radioCat:
                answerIntent.putExtra(THIEF, "Лошадь Преживальского");
                break;
            case R.id.radioCrow:
                answerIntent.putExtra(THIEF, "Ворона");
                break;

            default:
                break;
        }

        setResult(RESULT_OK, answerIntent);
        finish();
    }
}

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

Вы неаккуратно переписали код метода onActivityResult(). Найдите ошибку самостоятельно - одно слово

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

Нашла ошибку, все заработало.
Большое кошачье спасибо smile