Как из списка вызвать второй активити?
Как из списка вызвать второй активити?
Всем привет! я создаю прозрачный список ListView и хочу что бы при нажатии кнопку "петя" открывался второй активити:)при нажатии "федя" третий активити:)Хочу спросить как привязывать к пунктам списка активити:) И какой метод нужен если текст в лоут файле большой, и выходит за границы, как сделать чтобы он прокручивался:)Заранее Спаибо!
Re: Как из списка вызвать второй активити?
посмотри уроки 22 и 44 там подробно описаноdo_cent писал(а):Всем привет! я создаю прозрачный список ListView и хочу что бы при нажатии кнопку "петя" открывался второй активити:)при нажатии "федя" третий активити:)Хочу спросить как привязывать к пунктам списка активити:) И какой метод нужен если текст в лоут файле большой, и выходит за границы, как сделать чтобы он прокручивался:)Заранее Спаибо!
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Как из списка вызвать второй активити?
Для прокрутки есть элемент ScrollView.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
Re: Как из списка вызвать второй активити?
ListView же, вроде, сам перематывается, когда имеет размер больше экрана?
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Как из списка вызвать второй активити?
На сколько я понял, он имеет в виду "лоут" на котором будет информация по выбранному человеку, а не экран со списком.andev писал(а):ListView же, вроде, сам перематывается, когда имеет размер больше экрана?
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
Re: Как из списка вызвать второй активити?
Конечно спасибо! Я как раз по 44 уроку и делаю. Но меня как раз интересует куда надо вписать id второго активити:) чтобы при нажатиии на пункт не лог всплывал а второй активити я всё создал просто не могу к "пети" привязать второй активити:)
Re: Как из списка вызвать второй активити?
ну элементарно же
Код: Выделить всё
private ArrayAdapter<String> adapter;
lvMain.setOnItemSelectedListener(new OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parent, View view, position, long id) {
String man = adapter.getItem(position);
if (man.equalsIgnoreCase("Петя")) {
Intent myIntent = new Intent(this, ActivityPetya.class);
startActivity(myIntent);
} else if (man.equalsIgnoreCase("Вася")) {
Intent myIntent = new Intent(this, ActivityVasya.class);
startActivity(myIntent);
} // и так далее
}
public void onNothingSelected(AdapterView<?> parent) {
}
});
Re: Как из списка вызвать второй активити?
Есть обработчик OnItemClickListener (урок 44). В него вам нужно вставить вызов другого Activity (урок 21). На каком именно моменте возникает трудность?do_cent писал(а):Я как раз по 44 уроку и делаю. Но меня как раз интересует куда надо вписать id второго активити:) чтобы при нажатиии на пункт не лог всплывал а второй активити я всё создал просто не могу к "пети" привязать второй активити:)
UPD:
andev уже все расписал
Re: Как из списка вызвать второй активити?
Вот так получилось но там где то ошибка не пойму где
И еще хотел спросить С текстом всё получилось но только у меня там стих и как мне его сделать чтобы было ровно в колоночку и по четверостишиям а то ScrollView его сплошным тексто делает как рассказ:) Делал по этому посту только без горизонтальной прокрутки http://developer.alexanderklimov.ru/and ... llview.php
Заранее Спасибо!
Код: Выделить всё
public class ProbaActivity extends Activity {
ListView lvMain;
/** Called when the activity is first created. */
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
lvMain = (ListView) findViewById(R.id.lvMain);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
this, R.array.names, android.R.layout.simple_list_item_1);
lvMain.setAdapter(adapter);
lvMain.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
String man = adapter.getItem(position);
if (man.equalsIgnoreCase("Петр")) {
Intent myIntent = new Intent(this, Pervstix.class);
startActivity(myIntent);
}
lvMain.setOnItemSelectedListener(new OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
}
public void onNothingSelected(AdapterView<?> parent) {
}
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
}
}
Заранее Спасибо!
Последний раз редактировалось do_cent 06 апр 2012, 15:00, всего редактировалось 2 раза.
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Как из списка вызвать второй активити?
Ошибка в onScroll. Это метод из другого интерфейса. Интерфейс называется OnScrollListener.
Я догадываюсь, что Вы собираетесь сделать и это НЕ правильно. Если по нажатию на строку показывается совершенно одинаковые экраны с разными текстами, стоит сделать одну Activity которая заполняется нужным содержимым сама. Для это го нужно передать в вызываемую активность информацию о выбранном пункте:А в onCreate класса Pervstix заполнить текстовые поля в зависимости от выбранного пункта.
Как пользоваться putExtra рассказывается в 28 уроке.
Переносы строк делаются следующим образом: "Первая строка \n Вторая строка".
Я думаю, мне не стоит напоминать, что все тексты лучше держать в strings.xml
PS: OnItemSelectedListener сдесь совершенно лишний, лучше его убрать.
Я догадываюсь, что Вы собираетесь сделать и это НЕ правильно. Если по нажатию на строку показывается совершенно одинаковые экраны с разными текстами, стоит сделать одну Activity которая заполняется нужным содержимым сама. Для это го нужно передать в вызываемую активность информацию о выбранном пункте:
Код: Выделить всё
lvMain.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent myIntent = new Intent(this, Pervstix.class);
myIntent.putExtra("Name", adapter.getItem(position));
startActivity(myIntent);
}
Как пользоваться putExtra рассказывается в 28 уроке.
Переносы строк делаются следующим образом: "Первая строка \n Вторая строка".
Я думаю, мне не стоит напоминать, что все тексты лучше держать в strings.xml
PS: OnItemSelectedListener сдесь совершенно лишний, лучше его убрать.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
Re: Как из списка вызвать второй активити?
нет там не совершенно одинаковые файлы там к разному стиху разная картинка:) если можно как ты предложил в одном активити еще и картинку фона поменять тогда это будет лучше, ну я имею ввиду при нажатии на пункт :):) я поэтому и создаю прозрачный список чтобы на фон поставить фотку и при открытии у каждого пункта своя фотка и свой текст:):):):) а со стрингом попробую :):):)
Спасибо!
Спасибо!
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Как из списка вызвать второй активити?
С картинками можно поступить так-же как и с текстом.
На крайний случай, если внешний вид существенно различается а в функционале совершенно нет разницы, можно передавать разные слои в setContentView.
Если "Петя" то setContentView(R.layout.petya), если "Федя" setContentView(R.layout.fedya).
На крайний случай, если внешний вид существенно различается а в функционале совершенно нет разницы, можно передавать разные слои в setContentView.
Если "Петя" то setContentView(R.layout.petya), если "Федя" setContentView(R.layout.fedya).
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
Re: Как из списка вызвать второй активити?
Код: Выделить всё
package ru.doc.project;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class ProbaActivity extends Activity {
final String LOG_TAG = "myLogs";
ListView lvMain;
/** Called when the activity is first created. */
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
lvMain = (ListView) findViewById(R.id.lvMain);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
this, R.array.names, android.R.layout.simple_list_item_1);
lvMain.setAdapter(adapter);
lvMain.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Intent myIntent = new Intent(this, Pervstix.class);
myIntent.putExtra("Петр", adapter.getItem(position));
startActivity(myIntent);
}
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
}
что то всё равно не получается:)Может у меня ошибка в ДНК:):):):):)подчеркивает adapter в строке ("Петр", adapter.getItem(position)); всю new Intent(this, Pervstix.class); и array в строке R.array.names,
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Как из списка вызвать второй активити?
Даю универсальный совет (работает в 90% случаев). Нужно навести мышку на подчеркнутое слово и посмотреть, что предлагает Эклипс.
Итак:
1) adapter нужно объявить как final. (final ArrayAdapter<CharSequence> adapter = ... и так далее). Если интересно, что такое final и с чем его едят тыкай СЮДА.
2) this нужно заменить на getApplicationContext(). this - это ссылка на объект в котором выполняется код, а в данном случае это OnItemClickListener и он не является подклассом Context, который должен быть указан первым параметром в конструкторе Intent. Если не понятно, добро пожаловать в урок 22, там все ясно объяснено.
3) Возможно не правильно был объявлен массив.
Итак:
1) adapter нужно объявить как final. (final ArrayAdapter<CharSequence> adapter = ... и так далее). Если интересно, что такое final и с чем его едят тыкай СЮДА.
2) this нужно заменить на getApplicationContext(). this - это ссылка на объект в котором выполняется код, а в данном случае это OnItemClickListener и он не является подклассом Context, который должен быть указан первым параметром в конструкторе Intent. Если не понятно, добро пожаловать в урок 22, там все ясно объяснено.
3) Возможно не правильно был объявлен массив.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
Re: Как из списка вызвать второй активити?
Получилось! Всем спасибо! Особенно KamiSempai за терпение:):):):)
PS. А с array я просто из strings файла удалил имена и не заметил:):):):):):):)
PSS. Почему то акетивити не привязывается именно к "пети", на любой пункт нажимаешь он на любом пункте вытаскивает вторую активити(((( Чего делать?
PSSS.И еще хотел спросить что будет если я вместо .png фоток буду заливать .jpg и еще один вопрос ка сделать чтобы он нормально показывал фотки не растягивал по экрану? Заранее Спасибо!
PS. А с array я просто из strings файла удалил имена и не заметил:):):):):):):)
PSS. Почему то акетивити не привязывается именно к "пети", на любой пункт нажимаешь он на любом пункте вытаскивает вторую активити(((( Чего делать?
PSSS.И еще хотел спросить что будет если я вместо .png фоток буду заливать .jpg и еще один вопрос ка сделать чтобы он нормально показывал фотки не растягивал по экрану? Заранее Спасибо!
Re: Как из списка вызвать второй активити?
я думаю самое оптимальное - выложить архив с тем, что уже написано, вам быстро дадут ответdo_cent писал(а):PSS. Почему то акетивити не привязывается именно к "пети", на любой пункт нажимаешь он на любом пункте вытаскивает вторую активити(((( Чего делать?
Нормально будет, хотя лучше png, просто разрешение уменьшите до необходимого значения, размеры png и jpg почти сравняются, учитывая, что в png нет потери качества и можно использовать 9pathdo_cent писал(а): PSSS.И еще хотел спросить что будет если я вместо .png фоток буду заливать .jpg
поэкспериментируйте с атрибутами ImageView width и height, а также с атрибутом ImageView android:scaleTypedo_cent писал(а): и еще один вопрос ка сделать чтобы он нормально показывал фотки не растягивал по экрану? Заранее Спасибо!
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Как из списка вызвать второй активити?
Естественно! Так и должно быть. Я же уже говорил, что лучше вызвать 1 активити и заполнить ее стихами в зависимости от переданных данных.do_cent писал(а):PSS. Почему то акетивити не привязывается именно к "пети", на любой пункт нажимаешь он на любом пункте вытаскивает вторую активити(((( Чего делать?
И правильно писать не myIntent.putExtra("Петр", adapter.getItem(position)); а myIntent.putExtra("Name", adapter.getItem(position));
Имя человека находится в adapter.getItem(position), а "Name" это ключ, по которому мы будем доставать это имя из Extra во втором активити.
Перечитайте урок 28. Вы не правильно поняли как использовать Intent.
Исправил номер урока с 22 на 28.
Последний раз редактировалось KamiSempai 11 апр 2012, 12:24, всего редактировалось 1 раз.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
Re: Как из списка вызвать второй активити?
Получилось по способу andev всем спасибо!
Re: Как из списка вызвать второй активити?
Я так понимаю по моей подсказке получилось размещение View'ов на layout'e.
По поводу передачи данных между активити и заполнения второго активити информацией настоятельно рекомендую прислушаться к совету KamiSempai, т.к. создавать под каждый элемент списка свою активити крайне нерационально.
По поводу передачи данных между активити и заполнения второго активити информацией настоятельно рекомендую прислушаться к совету KamiSempai, т.к. создавать под каждый элемент списка свою активити крайне нерационально.
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Как из списка вызвать второй активити?
Не будем попрекать человека, ведь он только учится. Нам остается надеяться на то, что в будущем он все-таки научится правильному программированию, либо нам ни когда не придется копаться в его коде
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.