Урок 8. Работаем с элементами экрана из кода
Урок 8. Работаем с элементами экрана из кода
В этом уроке мы:
- научимся обращаться из кода к View-элементам на экране и менять их свойства
Click here to read this article!
- научимся обращаться из кода к View-элементам на экране и менять их свойства
Click here to read this article!
Последний раз редактировалось damager82 27 апр 2017, 14:34, всего редактировалось 11 раз.
Re: Урок 8. Работаем с элементами экрана из кода
Совет: простой способ добавить import в проект, это воспользоваться сочетанием клавиш Ctrl+Shift+O, недостающие пакеты будут автоматически определены и вставлены.
Tip: An easy way to add import packages to your project is to press Ctrl-Shift-O (Cmd-Shift-O, on Mac). This is an Eclipse shortcut that identifies missing packages based on your code and adds them for you. You may have to expand the import statements in your code for this to work.
http://developer.android.com/resources/ ... ld.html#ui
Re: Урок 8. Работаем с элементами экрана из кода
Здравствуйте, возникла такая проблемка - отсутствует R.id, при попытке записать константы в другие классы - ничего не происходит. Так же пробовал в ручную создать пункт id - все равно в него ничего не записывается, в чем проблема? Тварю на платформе 2.1, может это как-то сказывается?
___________________________________________
Кажется с проблемой разобрался - было создано 3 проекта, а ID составлялся для всех в 1 проекте, нужно было сменить адрес так сказать. С кодом еще не связывал компоненты, т.е. могу еще дописать это сообщение)
___________________________________________
Кажется с проблемой разобрался - было создано 3 проекта, а ID составлялся для всех в 1 проекте, нужно было сменить адрес так сказать. С кодом еще не связывал компоненты, т.е. могу еще дописать это сообщение)
Re: Урок 8. Работаем с элементами экрана из кода
package ru.startandroid.develop.viewbyid;
import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.TextView;
public class MainActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView myTextView = (TextView) findViewById(R.id.myText);
myTextView.setText("New text in TextView");
Button myBtn = (Button) findViewById(R.id.myBtn);
myBtn.setText("My button");
myBtn.setEnabled(false);
CheckBox myChb = (CheckBox) findViewById(R.id.myBtn);
myChb.setChecked(true);
}
}
что не правильно в этом коде? у меня в эклипсе подчёркивает "myBtn" не понять почему всё правельно делал!и исправить imortom нельзя!)
import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.TextView;
public class MainActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView myTextView = (TextView) findViewById(R.id.myText);
myTextView.setText("New text in TextView");
Button myBtn = (Button) findViewById(R.id.myBtn);
myBtn.setText("My button");
myBtn.setEnabled(false);
CheckBox myChb = (CheckBox) findViewById(R.id.myBtn);
myChb.setChecked(true);
}
}
что не правильно в этом коде? у меня в эклипсе подчёркивает "myBtn" не понять почему всё правельно делал!и исправить imortom нельзя!)
Re: Урок 8. Работаем с элементами экрана из кода
layout-файл точно сохранен?vano писал(а):что не правильно в этом коде? у меня в эклипсе подчёркивает "myBtn" не понять почему всё правельно делал!и исправить imortom нельзя!)
Удалите и снова добавьте кнопку в layout и сохраните все.
Re: Урок 8. Работаем с элементами экрана из кода
Код: Выделить всё
Button myBtn = (Button) findViewById(R.id.myBtn);
CheckBox myChb = (CheckBox) findViewById(R.id.myBtn);
и какой конкретно myBtn подчеркивает эклипс?
в коде их 5
PS попробуйте поискать во вкладке Problems
там обычно и ошибки и предупреждения
Re: Урок 8. Работаем с элементами экрана из кода
можете пожалуйста показать конечный код main, r.java. прсто понять не могу и ошибку так быстрее найду)заранее спасибо!
Re: Урок 8. Работаем с элементами экрана из кода
main.xml
R.java:
Код: Выделить всё
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
android:id="@+id/myText"
/>
<Button
android:id="@+id/myBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Button" />
<CheckBox
android:id="@+id/myChb"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="CheckBox" />
</LinearLayout>
Код: Выделить всё
/* AUTO-GENERATED FILE. DO NOT MODIFY.
*
* This class was automatically generated by the
* aapt tool from the resource data it found. It
* should not be modified by hand.
*/
package ru.startandroid.develop.viewbyid;
public final class R {
public static final class attr {
}
public static final class drawable {
public static final int ic_launcher=0x7f020000;
}
public static final class id {
public static final int myBtn=0x7f050001;
public static final int myChb=0x7f050002;
public static final int myText=0x7f050000;
}
public static final class layout {
public static final int main=0x7f030000;
}
public static final class string {
public static final int app_name=0x7f040001;
public static final int hello=0x7f040000;
}
}
Также обработать spinner.
Возможно ли также, как в уроке, обработать spinner?
Пытаюсь сделать по аналогии, не работает toast (видимо, не вызывается обработчик).
Хотя код обработчика кнопки (рядом находящегося) вызывается, toast работает.
Пытаюсь сделать по аналогии, не работает toast (видимо, не вызывается обработчик).
Хотя код обработчика кнопки (рядом находящегося) вызывается, toast работает.
Код: Выделить всё
public class MainActivity extends Activity implements OnClickListener, OnItemSelectedListener {
Button buttonVideo;
Spinner spinnerUpperLight, spinnerBottomLight;
@Override
public void onCreate(Bundle savedInstanceState) {
Spinner spinnerUpperLight = (Spinner) findViewById(R.id.upperlight);
spinnerUpperLight.setAdapter(adapterLight);
spinnerUpperLight.setOnItemSelectedListener(this);
buttonVideo = (Button) findViewById(R.id.videoButton);
buttonVideo.setOnClickListener(this);
}
}
...
public void onClick(View v) {
if (v.getId()==R.id.videoButton) {
if (buttonVideo.getText()==getString(R.string.videoButtonRecord)) {
buttonVideo.setText(R.string.videoButtonStop);
Toast.makeText(getBaseContext(), "Запись Видео", Toast.LENGTH_SHORT).show();
}
}
}
public void onItemSelected(AdapterView<?> parent, View v, int lightLevel, long id) {
if (v.getId()==R.id.upperlight) {
light.setUpperLight(lightLevel);
Toast.makeText(getBaseContext(), "Верхняя подсветка: " + lightLevel, Toast.LENGTH_SHORT).show();
}
}
}
Re: Также обработать spinner.
А урок 56 уже смотрели?fend писал(а):Возможно ли также, как в уроке, обработать spinner?
Re: Урок 8. Работаем с элементами экрана из кода
Да, по нему и делал.
Возможно ли, что дело в отсутствии @Override перед OnItemSelected?
Ппросто когда изначально OnItemSelected был в OnCreate, то пришлось убрать @Override - эклипс ругался, и без этой директивы заработало.
Возможно ли, что дело в отсутствии @Override перед OnItemSelected?
Ппросто когда изначально OnItemSelected был в OnCreate, то пришлось убрать @Override - эклипс ругался, и без этой директивы заработало.
Re: Урок 8. Работаем с элементами экрана из кода
Чет я невнимательно посмотрел первый раз.
А зачем вы это условие проверяете?
v.getId()==R.id.upperlight
Здесь v - это один из пунктов списка spinner. А сам spinner - это parent.
А зачем вы это условие проверяете?
v.getId()==R.id.upperlight
Здесь v - это один из пунктов списка spinner. А сам spinner - это parent.
Re: Урок 8. Работаем с элементами экрана из кода
там два подобных, upperlight и bottomlight.
просто выкинул абсолютно идентичный код для краткости.
просто выкинул абсолютно идентичный код для краткости.
Re: Урок 8. Работаем с элементами экрана из кода
Вам надо проверять не v, а parent.fend писал(а):там два подобных, upperlight и bottomlight.
просто выкинул абсолютно идентичный код для краткости.
Re: Урок 8. Работаем с элементами экрана из кода
ясно. а можно подробнее или ссылку на объяснение?
Re: Урок 8. Работаем с элементами экрана из кода
В коде вместо v.getId()==R.id.upperlight, напишите parent.getId()==R.id.upperlightfend писал(а):ясно. а можно подробнее или ссылку на объяснение?
Re: Урок 8. Работаем с элементами экрана из кода
ага, заработало. спасибо большое.
теоретический вопрос - а почему при работе со спиннером в данном примере мы обращаемся не к view, а к адаптеру?
теоретический вопрос - а почему при работе со спиннером в данном примере мы обращаемся не к view, а к адаптеру?
Re: Урок 8. Работаем с элементами экрана из кода
Адаптер мы используем только здесь: spinner.setAdapter(adapter);fend писал(а):теоретический вопрос - а почему при работе со спиннером в данном примере мы обращаемся не к view, а к адаптеру?
А AdapterView - это View.
-
- Сообщения: 8
- Зарегистрирован: 26 июл 2012, 13:36
Re: Урок 8. Работаем с элементами экрана из кода
Доброго времени суток.
Столкнулся с идиотской проблемой, но не могу понять почему может не добавлять элемент TextView. При этом то, что в хмл - отображается нормально, но программный элемент не добавляется. Где дырка?
Ниже ХМЛ и код
java
UPD получилось так, что отдельно данный код работает, но не работает в составе "флиппера" который листает экраны. Похоже надо колупаться там.
Варианты как можно прописать и тоже заработало
или
Столкнулся с идиотской проблемой, но не могу понять почему может не добавлять элемент TextView. При этом то, что в хмл - отображается нормально, но программный элемент не добавляется. Где дырка?
Ниже ХМЛ и код
Код: Выделить всё
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/RelativeCompany"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<LinearLayout
android:id="@+id/LinearCompany"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView" />
</LinearLayout>
</RelativeLayout>
Код: Выделить всё
package com.example.mobilewecanomy;
import android.os.Bundle;
import android.app.Activity;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
public class companies extends Activity {
LinearLayout thisLayout;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.companies);
thisLayout = (LinearLayout) findViewById(R.id.LinearCompany);
TextView tv = new TextView(getApplicationContext());
tv.setText("1111111");
// textView.setTextSize(100);
// textView.setTextColor(Color.BLACK);
// textView.setGravity(Gravity.CENTER);
// textView.setBackgroundColor(Color.BLUE);
thisLayout.addView(tv);
}
}
Варианты как можно прописать и тоже заработало
Код: Выделить всё
TextView tv = new TextView(this);
Код: Выделить всё
TextView tv = new TextView(thisLayout.getContext());
-
- Сообщения: 21
- Зарегистрирован: 30 янв 2012, 21:15
Re: Урок 8. Работаем с элементами экрана из кода
Маленький вопрос:
В уроке вы сделали кнопку не активной, а есть ли у EditText какой нибудь метод, чтобы запретить редактирование(сделать не активным)?
В уроке вы сделали кнопку не активной, а есть ли у EditText какой нибудь метод, чтобы запретить редактирование(сделать не активным)?