Урок 30. Подробнее про onActivityResult. Зачем нужны requestCode и resultCode
Re: Урок 30. Подробнее про onActivityResult. Зачем нужны req
Капец, как я просмотрел?Вот спасибо большое!
Re: Урок 30. Подробнее про onActivityResult. Зачем нужны req
Всем привет.
Наконец-то мои нервы не выдержали и я решил обратиться на форум. Потому как сам я не понимаю в чем проблема.
Конкретно урок 30, да и большинство предыдущих, раздражает меня такими проблемами:
- Даже при копипасте, выдает какие-то ошибки, которые рандомно появляются и пропадают, тем самым не давая мне запустить приложение на эмуляторе. Одна из наиболее частых, появляется в xml - после закрытия линеар лайаута, выдает нечто похожее на "неожиданный конец".
- Конкретно в этом уроке, у меня только после 4 копипаста (до этого набирал) приняло без ошибки REQUEST_CODE - ошибка REQUEST_CODE_ALIGN cannot be resolved to a variable.
- В строчке Log.d("myLogs", "requestCode = " + requestCode + ", resultCode = " + resultCode); пишет
Log cannot be resolved.
- В строчке int color = data.getIntExtra("color", Color.WHITE); - пишет Color cannot be resolved to a variable, так же и Align.
-Эта строчка Toast.makeText(this, "Wrong result", Toast.LENGTH_SHORT).show(); радует меня этим - Multiple markers at this line
- Toast cannot be resolved
- Toast cannot be resolved to a
- case R.id.btnLeft: - case expressions must be constant expressions.
Прошу, объясните в чем дело. Серия копипастов исправляет не все проблемы. Как исправить их я не знаю. Надеюсь вы сбережете мои нервы своими знаниями.
Наконец-то мои нервы не выдержали и я решил обратиться на форум. Потому как сам я не понимаю в чем проблема.
Конкретно урок 30, да и большинство предыдущих, раздражает меня такими проблемами:
- Даже при копипасте, выдает какие-то ошибки, которые рандомно появляются и пропадают, тем самым не давая мне запустить приложение на эмуляторе. Одна из наиболее частых, появляется в xml - после закрытия линеар лайаута, выдает нечто похожее на "неожиданный конец".
- Конкретно в этом уроке, у меня только после 4 копипаста (до этого набирал) приняло без ошибки REQUEST_CODE - ошибка REQUEST_CODE_ALIGN cannot be resolved to a variable.
- В строчке Log.d("myLogs", "requestCode = " + requestCode + ", resultCode = " + resultCode); пишет
Log cannot be resolved.
- В строчке int color = data.getIntExtra("color", Color.WHITE); - пишет Color cannot be resolved to a variable, так же и Align.
-Эта строчка Toast.makeText(this, "Wrong result", Toast.LENGTH_SHORT).show(); радует меня этим - Multiple markers at this line
- Toast cannot be resolved
- Toast cannot be resolved to a
- case R.id.btnLeft: - case expressions must be constant expressions.
Прошу, объясните в чем дело. Серия копипастов исправляет не все проблемы. Как исправить их я не знаю. Надеюсь вы сбережете мои нервы своими знаниями.
Re: Урок 30. Подробнее про onActivityResult. Зачем нужны req
Ckapa, может быть не копипастятся все импорты?
Код: Выделить всё
import android.app.Activity;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
Re: Урок 30. Подробнее про onActivityResult. Зачем нужны req
Копи-паст без осознания, чего и как работает, плохая идея.
Re: Урок 30. Подробнее про onActivityResult. Зачем нужны req
Объясняю. Нужно повторять все вручную.
Твои ошибки объясняются тем, что у тебя возникает какая-то ошибка в xml файле (а это запросто при копипасте), поэтому R не образуется, а раз он не образуется, то будут выдаваться ошибки в коде при обращении к ресурсам R.
Твои ошибки объясняются тем, что у тебя возникает какая-то ошибка в xml файле (а это запросто при копипасте), поэтому R не образуется, а раз он не образуется, то будут выдаваться ошибки в коде при обращении к ресурсам R.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Урок 30. Подробнее про onActivityResult. Зачем нужны req
Я сначала набираю все от руки!! ПОтом когда ошибки меня достают я начинаю копипастить. Ошибки возникают из воздуха (я по буковке сверял с текстом урока). Так что не в копипасте дело.
Re: Урок 30. Подробнее про onActivityResult. Зачем нужны req
там есть лог, смотри ошибки там, иногда на ошибки в xml указываются там
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
Re: Урок 30. Подробнее про onActivityResult. Зачем нужны req
Подскажите, не могу придумать
Задача: рядом с кнопками цвета сделать Edit Text и при нажатии кнопки ОК считывался (видимо текст) например MAGENTA, потом присваивался передаваемому значению.
И в итоге получали свет текста заданного ручками.
возможно глупая затея, но все же.
Спасибо
Задача: рядом с кнопками цвета сделать Edit Text и при нажатии кнопки ОК считывался (видимо текст) например MAGENTA, потом присваивался передаваемому значению.
И в итоге получали свет текста заданного ручками.
возможно глупая затея, но все же.
Спасибо
Re: Урок 30. Подробнее про onActivityResult. Зачем нужны req
Код: Выделить всё
if (resultCode == RESULT_OK) {
switch (requestCode) {
case REQUEST_CODE_COLOR:
int color = data.getIntExtra("color", Color.WHITE);
tvText.setTextColor(color);
break;
case REQUEST_CODE_ALIGN:
int align = data.getIntExtra("alignment", Gravity.LEFT);
tvText.setGravity(align);
break;
}
Re: Урок 30. Подробнее про onActivityResult. Зачем нужны req
Пошел другим путем и реализовал ColorActivity через SeekBar'ы, а AlignActivity в диалоговом окне через RadioButton. Поймал себя на мысли, что и про первую и про вторую упоминалось вскользь на занятиях и забывается моментально (в отличии от OnClickListener, который уже от зубов отскакивает ).
Можно как домашку к этому уроку смело давать, с пометкой, что значение цвета - это int, а задать цвет можно командой Color.rgb(красный, зеленый, синий).
Можно как домашку к этому уроку смело давать, с пометкой, что значение цвета - это int, а задать цвет можно командой Color.rgb(красный, зеленый, синий).
Re: Урок 30. Подробнее про onActivityResult. Зачем нужны req
Что то не получается код в строчке tvText.setGravity
и принудительно ставил tvText.setGravity(Gravity.CENTER), а он не выполняет это строчку...
и принудительно ставил tvText.setGravity(Gravity.CENTER), а он не выполняет это строчку...
Re: Урок 30. Подробнее про onActivityResult. Зачем нужны req
Метод setGravity не изменяет позицию строки, пришлось инициализировать LinearLayout и уже ей присваивать константу из класса Gravity.
Хмм... и если попробовать сменить позицию элемента (вложенного в LinearLayout) непосредственно в xml файле, она не изменится.
Хмм... и если попробовать сменить позицию элемента (вложенного в LinearLayout) непосредственно в xml файле, она не изменится.
Re: Урок 30. Подробнее про onActivityResult. Зачем нужны req
Та же ситуация, да и в Properties TextView нету ничего связанного выравниванием текста.Don77 писал(а):Метод setGravity не изменяет позицию строки, пришлось инициализировать LinearLayout и уже ей присваивать константу из класса Gravity.
Хмм... и если попробовать сменить позицию элемента (вложенного в LinearLayout) непосредственно в xml файле, она не изменится.
-
- Сообщения: 2
- Зарегистрирован: 30 сен 2014, 23:00
Re: Урок 30. Подробнее про onActivityResult. Зачем нужны req
Привет всем!
Вопрос, почему к TextView не применяется alignment? Из активити все возвращается, в логах ошибок нет, смотрю на код и не могу понять, где я недоглядел.
AlignmentActivity.xml
MainActivity.xml
UPD Разобрался! В layout файле у TextView стояло:
android:layout_width="wrap_content"
android:layout_gravity="center_horizontal"
заменил на
android:layout_width="match_parent"
android:gravity="center"
Вопрос, почему к TextView не применяется alignment? Из активити все возвращается, в логах ошибок нет, смотрю на код и не могу понять, где я недоглядел.
AlignmentActivity.xml
Код: Выделить всё
package ru.chebe.p0301_activityresult;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class AlignmentActivity extends Activity implements OnClickListener {
Button btnLeft, btnCenter, btnRight;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView( R.layout.layout_align );
btnLeft = (Button)findViewById(R.id.btnLeft );
btnLeft.setOnClickListener(this);
btnCenter = (Button)findViewById(R.id.btnCenter );
btnCenter.setOnClickListener(this);
btnRight = (Button)findViewById(R.id.btnRight );
btnRight.setOnClickListener(this);
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent();
switch( v.getId() ) {
case R.id.btnLeft:
intent.putExtra("alignment", Gravity.LEFT);
break;
case R.id.btnCenter:
intent.putExtra("alignment", Gravity.CENTER);
break;
case R.id.btnRight:
intent.putExtra("alignment", Gravity.RIGHT);
break;
}
setResult(RESULT_OK, intent);
finish();
}
}
Код: Выделить всё
package ru.chebe.p0301_activityresult;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;
import android.view.Gravity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity implements OnClickListener {
Button btnColor, btnAlign;
TextView tvText;
final int REQUEST_CODE_COLOR = 1, REQUEST_CODE_ALIGNMENT = 2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btnColor = (Button) findViewById( R.id.btnColor );
btnColor.setOnClickListener(this);
btnAlign = (Button) findViewById( R.id.btnAlign );
btnAlign.setOnClickListener(this);
tvText = (TextView) findViewById( R.id.tvText );
}
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent;
switch( v.getId() ) {
case R.id.btnColor:
intent = new Intent(this, ColorActivity.class);
startActivityForResult(intent, REQUEST_CODE_COLOR);
break;
case R.id.btnAlign:
intent = new Intent(this, AlignmentActivity.class);
startActivityForResult(intent, REQUEST_CODE_ALIGNMENT);
break;
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
if( resultCode == RESULT_OK ) {
switch( requestCode ) {
case REQUEST_CODE_COLOR:
int color = data.getIntExtra("color", Color.BLACK);
tvText.setTextColor(color);
break;
case REQUEST_CODE_ALIGNMENT:
int alignment = data.getIntExtra("alignment", Gravity.CENTER);
tvText.setGravity(alignment);
break;
}
} else {
Toast.makeText(this, "Wrong result!", Toast.LENGTH_SHORT).show();
}
super.onActivityResult(requestCode, resultCode, data);
}
}
UPD Разобрался! В layout файле у TextView стояло:
android:layout_width="wrap_content"
android:layout_gravity="center_horizontal"
заменил на
android:layout_width="match_parent"
android:gravity="center"
-
- Сообщения: 9
- Зарегистрирован: 29 апр 2015, 09:47
Re: Урок 30. Подробнее про onActivityResult. Зачем нужны req
При нажатии кнопок, относящихся к ActivitColor, метод setResult возвращает RESULT_OK равный 1 (видно по логам) т.е. все как показано на скринах. А вот при нажатии кнопок выравнивания, логи показывают resultCode = 2, а на скринах тоже должно быть 1, но при этом все работает. Я так понимаю RESULT_OK может возвращать только 0 и 1? почему же у меня 2?
Re: Урок 30. Подробнее про onActivityResult. Зачем нужны req
Не путай с реквест кодом.Радислав Гандопас писал(а):При нажатии кнопок, относящихся к ActivitColor, метод setResult возвращает RESULT_OK равный 1 (видно по логам) т.е. все как показано на скринах. А вот при нажатии кнопок выравнивания, логи показывают resultCode = 2, а на скринах тоже должно быть 1, но при этом все работает. Я так понимаю RESULT_OK может возвращать только 0 и 1? почему же у меня 2?
requestCode – это в некотором роде ID запроса. Задается в методе startActivityForResult, и проверяется потом в onActivityResult, чтобы точно знать, на какой вызов пришел ответ.
resultCode – статус вызова. Задается в методе setResult, и проверяется в onActivityResult, чтобы понять насколько успешно прошел вызов. Если при вызове что-то пошло не так, то вернется системная константа RESULT_CANCELED.
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Re: Урок 30. Подробнее про onActivityResult. Зачем нужны req
Возможно ли в вызываемой форме (activity) узнать requestCode т.е. код с которым она была вызвана?
Re: Урок 30. Подробнее про onActivityResult. Зачем нужны req
Обычно такие активити выполняют какое-то одно действие и необходимости в реквест коде нету. Можно самому добавить код через интент http://stackoverflow.com/a/5104476 , а вообще стоит задуматься о декомпозиции своего "швейцарского ножа" на отдельные активити, во избежание вермишели в коде.dmitres писал(а):Возможно ли в вызываемой форме (activity) узнать requestCode т.е. код с которым она была вызвана?
Семь раз отмерь - поставь студию.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Эклипс не студия, ошибка вылетит - не исправишь.
Скажи мне кто твой друг, и оба поставили студию.
Студия - свет, а эклипс - тьма.
Re: Урок 30. Подробнее про onActivityResult. Зачем нужны req
Действий всего 2: create item, edit item. Решил через setType().doter.ua писал(а):Обычно такие активити выполняют какое-то одно действие и необходимости в реквест коде нету. Можно самому добавить код через интент http://stackoverflow.com/a/5104476 , а вообще стоит задуматься о декомпозиции своего "швейцарского ножа" на отдельные активити, во избежание вермишели в коде.dmitres писал(а):Возможно ли в вызываемой форме (activity) узнать requestCode т.е. код с которым она была вызвана?
-
- Сообщения: 1
- Зарегистрирован: 27 сен 2016, 09:06
Re: Урок 30. Подробнее про onActivityResult. Зачем нужны req
Добрый день подскажиет куда копать.При выборе цвета или расположения они не взаимодействую вместе, т.е. при выборе цвета всегда тектс остается в центре, при выборе расположения цвет всегда по умолчанию.