Урок 8. Работаем с элементами экрана из кода
Re: Урок 8. Работаем с элементами экрана из кода
Добрый день!
Столкнулся с одной проблемкой. Если пользователь устанавливает размер системного шрифта на большой или огромный, то естественно веся разметка лезет вкривь и вкось. Подскажите пожалуйста можно как то установить из кода приложения размер системного шрифта, чтобы он был нормальный NORMAL?
пробовал сделать так
[syntax=java]
Settings.System.putFloat(this.getContentResolver(),Settings.System.FONT_SCALE,(float) 1.0);
[/syntax]
не помогло
и так тоже пробовал
[syntax=java]
Configuration configuration = getResources().getConfiguration();
configuration.fontScale=(float) 1; //0.85 small size, 1 normal size, 1,15 big etc
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
metrics.scaledDensity = configuration.fontScale * metrics.density;
getBaseContext().getResources().updateConfiguration(configuration, metrics);
[/syntax]
и тоже не помогло
разрешение в манифесте выставил такое
[syntax=xml]
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
[/syntax]
Столкнулся с одной проблемкой. Если пользователь устанавливает размер системного шрифта на большой или огромный, то естественно веся разметка лезет вкривь и вкось. Подскажите пожалуйста можно как то установить из кода приложения размер системного шрифта, чтобы он был нормальный NORMAL?
пробовал сделать так
[syntax=java]
Settings.System.putFloat(this.getContentResolver(),Settings.System.FONT_SCALE,(float) 1.0);
[/syntax]
не помогло
и так тоже пробовал
[syntax=java]
Configuration configuration = getResources().getConfiguration();
configuration.fontScale=(float) 1; //0.85 small size, 1 normal size, 1,15 big etc
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
metrics.scaledDensity = configuration.fontScale * metrics.density;
getBaseContext().getResources().updateConfiguration(configuration, metrics);
[/syntax]
и тоже не помогло
разрешение в манифесте выставил такое
[syntax=xml]
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
[/syntax]
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Урок 8. Работаем с элементами экрана из кода
Если разметка едет, проблемы с разметкой. Разные размеры экранов тоже костылями править собираетесь?
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
Re: Урок 8. Работаем с элементами экрана из кода
собственно у многих приложений такая проблема
у того же самого вашего Traning Note та же самая проблема
если установить шрифт на очень большой то разметка съезжает
так что у вас та же самая проблема что и у меня
и так же у многих видно что размер шрифта не меняется, даже при смене системного
вопрос прежний как этого добиться
у того же самого вашего Traning Note та же самая проблема
если установить шрифт на очень большой то разметка съезжает
так что у вас та же самая проблема что и у меня
и так же у многих видно что размер шрифта не меняется, даже при смене системного
вопрос прежний как этого добиться
- Вложения
-
- Screenshot_2014-06-09-22-38-20.png (168.2 КБ) 14303 просмотра
-
- Screenshot_2014-06-09-22-35-05.png (169.26 КБ) 14303 просмотра
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Урок 8. Работаем с элементами экрана из кода
Я его уже год не обновлял. Скоро выпускаю обновление, сделанное по всем канонам андроида.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
Re: Урок 8. Работаем с элементами экрана из кода
вопрос то был не в этом
просто интересно как можно установить FONT_SCALE для своего приложения в нужное значение
просто интересно как можно установить FONT_SCALE для своего приложения в нужное значение
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Урок 8. Работаем с элементами экрана из кода
Если брать мой случай, нужно сделать выравнивание текста по центру. Плюс ко всему, можно задать разные размеры для разных размеров экрана. Например, для маленьких экранов сделать заголовки чуть меньше чем для больших экранов. Делается это через разные values.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
Re: Урок 8. Работаем с элементами экрана из кода
это я знаю, что можно через разные файлов ресурсов для разных размеров экранов и плотностей пикселей,
но часто такое может быть что даже если размер шрифта разный, если пользователь выберет в настройках огромный шрифт, то все равно разметка может поехать
но часто такое может быть что даже если размер шрифта разный, если пользователь выберет в настройках огромный шрифт, то все равно разметка может поехать
Re: Урок 8. Работаем с элементами экрана из кода
Ребят, такая проблема: делал все в точности, как Виталий до момента, когда мы начали устанавливать значение текста в TextView из метода main. В классе id в файле R.java все добавилось, переменная myText есть. Вот смотрите, как я действую дальше: в файле MainActivity.java ввожу TextView myTextView=(TextView)findViewById (R.id.myText); (при этом добавив импорты), запускаю приложение, все работает, но он ругается, что переменная myTextView нигде не используется, это понятно. Вот дальше добавляю строку myTextView.setText("New text in text view");, запускаю приложение и вылетает. Пишет The application has stopped unexpectedly. Подскажите, что делать? Заранее спасибо
Re: Урок 8. Работаем с элементами экрана из кода
Нужно выкладывать код и логи.Подскажите, что делать? Заранее спасибо
Может Вы используете не тот layout файл?
Re: Урок 8. Работаем с элементами экрана из кода
У меня такая же проблема..Ребят, такая проблема: делал все в точности, как Виталий до момента, когда мы начали устанавливать значение текста в TextView из метода main. В классе id в файле R.java все добавилось, переменная myText есть. Вот смотрите, как я действую дальше: в файле MainActivity.java ввожу TextView myTextView=(TextView)findViewById (R.id.myText); (при этом добавив импорты), запускаю приложение, все работает, но он ругается, что переменная myTextView нигде не используется, это понятно. Вот дальше добавляю строку myTextView.setText("New text in text view");, запускаю приложение и вылетает. Пишет The application has stopped unexpectedly. Подскажите, что делать? Заранее спасибо
Вот мой код:anpatu писал(а):Нужно выкладывать код и логи.
Код: Выделить всё
package ru.startandroid.develop.viewbyid;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBar;
import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;
import android.os.Build;
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView myTextView = (TextView) findViewById(R.id.myText);
try {
myTextView.setText("HAHAHA");
}
catch(NullPointerException e) {
Toast.makeText(this, "Oooops, something went wrong...", 1000).show();
};
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment()).commit();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
/**
* A placeholder fragment containing a simple view.
*/
public static class PlaceholderFragment extends Fragment {
public PlaceholderFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main, container,
false);
return rootView;
}
}
}
Я, конечно, подразумеваю, что это из-за обновления Google Eclipse ADT Bundle, в котором помимо activity_main.xml создается еще fragment_main.xml... И что наш TextView в действительности находится во втором из них, а не в первом, что и приводит к исключению NullPointerException... Но как переписать код так, чтобы текст все-таки программно изменился?
Нашел ответ...
Вот так надо переписать код:
Код: Выделить всё
package ru.startandroid.develop.viewbyid;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.ActionBar;
import android.support.v4.app.Fragment;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;
import android.os.Build;
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment()).commit();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
/**
* A placeholder fragment containing a simple view.
*/
public static class PlaceholderFragment extends Fragment {
public PlaceholderFragment() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main, container,
false);
TextView myTextView = (TextView) rootView.findViewById(R.id.myText);
myTextView.setText("HAHAHA");
return rootView;
}
}
}
Код: Выделить всё
TextView myTextView = (TextView) rootView.findViewById(R.id.myText);
myTextView.setText("HAHAHA");
Теперь при запуске на экране "HAHAHA"
Re: Урок 8. Работаем с элементами экрана из кода
Добрый день форумчане!
У меня имеется вопрос. Существует куча элементов экрана типа TextView c id vi1, vi2, vi3 и т.д.
Можно ли это как то компактнее выполнить?
Ибо выходит не очень красиво.
[syntax=java] vi1 = (TextView) findViewById(R.id.vi1);
vi2 = (TextView) findViewById(R.id.vi2);
vi3 = (TextView) findViewById(R.id.vi3);
vi4 = (TextView) findViewById(R.id.vi4);
vi5 = (TextView) findViewById(R.id.vi5);
vi6 = (TextView) findViewById(R.id.vi6);
vi7 = (TextView) findViewById(R.id.vi7);
vi8 = (TextView) findViewById(R.id.vi8);
vi9 = (TextView) findViewById(R.id.vi9);
vi10 = (TextView) findViewById(R.id.vi10);
vi11 = (TextView) findViewById(R.id.vi11);
vi12 = (TextView) findViewById(R.id.vi12);
vi13 = (TextView) findViewById(R.id.vi13);
vi14 = (TextView) findViewById(R.id.vi14);
vi15 = (TextView) findViewById(R.id.vi15);
vi16 = (TextView) findViewById(R.id.vi16);
vi17 = (TextView) findViewById(R.id.vi17);
vi18 = (TextView) findViewById(R.id.vi18);
vn1 = (TextView) findViewById(R.id.vn1);
vn2 = (TextView) findViewById(R.id.vn2);
vn3 = (TextView) findViewById(R.id.vn3);
vn4 = (TextView) findViewById(R.id.vn4);
vn5 = (TextView) findViewById(R.id.vn5);
vn6 = (TextView) findViewById(R.id.vn6);
vn7 = (TextView) findViewById(R.id.vn7);
vn8 = (TextView) findViewById(R.id.vn8);
vn9 = (TextView) findViewById(R.id.vn9);
vn10 = (TextView) findViewById(R.id.vn10);
vn11 = (TextView) findViewById(R.id.vn11);
vn12 = (TextView) findViewById(R.id.vn12);
vn13 = (TextView) findViewById(R.id.vn13);
vn14 = (TextView) findViewById(R.id.vn14);
vn15 = (TextView) findViewById(R.id.vn15);
vn16 = (TextView) findViewById(R.id.vn16);
vn17 = (TextView) findViewById(R.id.vn17);
vn18 = (TextView) findViewById(R.id.vn18);
vs1 = (TextView) findViewById(R.id.vs1);
vs2 = (TextView) findViewById(R.id.vs2);
vs3 = (TextView) findViewById(R.id.vs3);
vs4 = (TextView) findViewById(R.id.vs4);
vs5 = (TextView) findViewById(R.id.vs5);
vs6 = (TextView) findViewById(R.id.vs6);
vs7 = (TextView) findViewById(R.id.vs7);
vs8 = (TextView) findViewById(R.id.vs8);
vs9 = (TextView) findViewById(R.id.vs9);
vs10 = (TextView) findViewById(R.id.vs10);
vs11 = (TextView) findViewById(R.id.vs11);
vs12 = (TextView) findViewById(R.id.vs12);
vs13 = (TextView) findViewById(R.id.vs13);
vs14 = (TextView) findViewById(R.id.vs14);
vs15 = (TextView) findViewById(R.id.vs15);
vs16 = (TextView) findViewById(R.id.vs16);
vs17 = (TextView) findViewById(R.id.vs17);
vs18 = (TextView) findViewById(R.id.vs18);
va1 = (TextView) findViewById(R.id.va1);
va2 = (TextView) findViewById(R.id.va2);
va3 = (TextView) findViewById(R.id.va3);
va4 = (TextView) findViewById(R.id.va4);
va5 = (TextView) findViewById(R.id.va5);
va6 = (TextView) findViewById(R.id.va6);
va7 = (TextView) findViewById(R.id.va7);
va8 = (TextView) findViewById(R.id.va8);
va9 = (TextView) findViewById(R.id.va9);
va10 = (TextView) findViewById(R.id.va10);
va11 = (TextView) findViewById(R.id.va11);
va12 = (TextView) findViewById(R.id.va12);
va13 = (TextView) findViewById(R.id.va13);
va14 = (TextView) findViewById(R.id.va14);
va15 = (TextView) findViewById(R.id.va15);
va16 = (TextView) findViewById(R.id.va16);
va17 = (TextView) findViewById(R.id.va17);
va18 = (TextView) findViewById(R.id.va18);[/syntax]
У меня имеется вопрос. Существует куча элементов экрана типа TextView c id vi1, vi2, vi3 и т.д.
Можно ли это как то компактнее выполнить?
Ибо выходит не очень красиво.
[syntax=java] vi1 = (TextView) findViewById(R.id.vi1);
vi2 = (TextView) findViewById(R.id.vi2);
vi3 = (TextView) findViewById(R.id.vi3);
vi4 = (TextView) findViewById(R.id.vi4);
vi5 = (TextView) findViewById(R.id.vi5);
vi6 = (TextView) findViewById(R.id.vi6);
vi7 = (TextView) findViewById(R.id.vi7);
vi8 = (TextView) findViewById(R.id.vi8);
vi9 = (TextView) findViewById(R.id.vi9);
vi10 = (TextView) findViewById(R.id.vi10);
vi11 = (TextView) findViewById(R.id.vi11);
vi12 = (TextView) findViewById(R.id.vi12);
vi13 = (TextView) findViewById(R.id.vi13);
vi14 = (TextView) findViewById(R.id.vi14);
vi15 = (TextView) findViewById(R.id.vi15);
vi16 = (TextView) findViewById(R.id.vi16);
vi17 = (TextView) findViewById(R.id.vi17);
vi18 = (TextView) findViewById(R.id.vi18);
vn1 = (TextView) findViewById(R.id.vn1);
vn2 = (TextView) findViewById(R.id.vn2);
vn3 = (TextView) findViewById(R.id.vn3);
vn4 = (TextView) findViewById(R.id.vn4);
vn5 = (TextView) findViewById(R.id.vn5);
vn6 = (TextView) findViewById(R.id.vn6);
vn7 = (TextView) findViewById(R.id.vn7);
vn8 = (TextView) findViewById(R.id.vn8);
vn9 = (TextView) findViewById(R.id.vn9);
vn10 = (TextView) findViewById(R.id.vn10);
vn11 = (TextView) findViewById(R.id.vn11);
vn12 = (TextView) findViewById(R.id.vn12);
vn13 = (TextView) findViewById(R.id.vn13);
vn14 = (TextView) findViewById(R.id.vn14);
vn15 = (TextView) findViewById(R.id.vn15);
vn16 = (TextView) findViewById(R.id.vn16);
vn17 = (TextView) findViewById(R.id.vn17);
vn18 = (TextView) findViewById(R.id.vn18);
vs1 = (TextView) findViewById(R.id.vs1);
vs2 = (TextView) findViewById(R.id.vs2);
vs3 = (TextView) findViewById(R.id.vs3);
vs4 = (TextView) findViewById(R.id.vs4);
vs5 = (TextView) findViewById(R.id.vs5);
vs6 = (TextView) findViewById(R.id.vs6);
vs7 = (TextView) findViewById(R.id.vs7);
vs8 = (TextView) findViewById(R.id.vs8);
vs9 = (TextView) findViewById(R.id.vs9);
vs10 = (TextView) findViewById(R.id.vs10);
vs11 = (TextView) findViewById(R.id.vs11);
vs12 = (TextView) findViewById(R.id.vs12);
vs13 = (TextView) findViewById(R.id.vs13);
vs14 = (TextView) findViewById(R.id.vs14);
vs15 = (TextView) findViewById(R.id.vs15);
vs16 = (TextView) findViewById(R.id.vs16);
vs17 = (TextView) findViewById(R.id.vs17);
vs18 = (TextView) findViewById(R.id.vs18);
va1 = (TextView) findViewById(R.id.va1);
va2 = (TextView) findViewById(R.id.va2);
va3 = (TextView) findViewById(R.id.va3);
va4 = (TextView) findViewById(R.id.va4);
va5 = (TextView) findViewById(R.id.va5);
va6 = (TextView) findViewById(R.id.va6);
va7 = (TextView) findViewById(R.id.va7);
va8 = (TextView) findViewById(R.id.va8);
va9 = (TextView) findViewById(R.id.va9);
va10 = (TextView) findViewById(R.id.va10);
va11 = (TextView) findViewById(R.id.va11);
va12 = (TextView) findViewById(R.id.va12);
va13 = (TextView) findViewById(R.id.va13);
va14 = (TextView) findViewById(R.id.va14);
va15 = (TextView) findViewById(R.id.va15);
va16 = (TextView) findViewById(R.id.va16);
va17 = (TextView) findViewById(R.id.va17);
va18 = (TextView) findViewById(R.id.va18);[/syntax]
Re: Урок 8. Работаем с элементами экрана из кода
http://kostin.ws/java/java-loops.htmlDazz1e писал(а):Добрый день форумчане!
У меня имеется вопрос. Существует куча элементов экрана типа TextView c id vi1, vi2, vi3 и т.д.
Можно ли это как то компактнее выполнить?
Ибо выходит не очень красиво.
[syntax=java] vi1 = (TextView) findViewById(R.id.vi1);
vi2 = (TextView) findViewById(R.id.vi2);
vi3 = (TextView) findViewById(R.id.vi3);
vi4 = (TextView) findViewById(R.id.vi4);
vi5 = (TextView) findViewById(R.id.vi5);
vi6 = (TextView) findViewById(R.id.vi6);
vi7 = (TextView) findViewById(R.id.vi7);
vi8 = (TextView) findViewById(R.id.vi8);
vi9 = (TextView) findViewById(R.id.vi9);
vi10 = (TextView) findViewById(R.id.vi10);
vi11 = (TextView) findViewById(R.id.vi11);
vi12 = (TextView) findViewById(R.id.vi12);
vi13 = (TextView) findViewById(R.id.vi13);
vi14 = (TextView) findViewById(R.id.vi14);
vi15 = (TextView) findViewById(R.id.vi15);
vi16 = (TextView) findViewById(R.id.vi16);
vi17 = (TextView) findViewById(R.id.vi17);
vi18 = (TextView) findViewById(R.id.vi18);
vn1 = (TextView) findViewById(R.id.vn1);
vn2 = (TextView) findViewById(R.id.vn2);
vn3 = (TextView) findViewById(R.id.vn3);
vn4 = (TextView) findViewById(R.id.vn4);
vn5 = (TextView) findViewById(R.id.vn5);
vn6 = (TextView) findViewById(R.id.vn6);
vn7 = (TextView) findViewById(R.id.vn7);
vn8 = (TextView) findViewById(R.id.vn8);
vn9 = (TextView) findViewById(R.id.vn9);
vn10 = (TextView) findViewById(R.id.vn10);
vn11 = (TextView) findViewById(R.id.vn11);
vn12 = (TextView) findViewById(R.id.vn12);
vn13 = (TextView) findViewById(R.id.vn13);
vn14 = (TextView) findViewById(R.id.vn14);
vn15 = (TextView) findViewById(R.id.vn15);
vn16 = (TextView) findViewById(R.id.vn16);
vn17 = (TextView) findViewById(R.id.vn17);
vn18 = (TextView) findViewById(R.id.vn18);
vs1 = (TextView) findViewById(R.id.vs1);
vs2 = (TextView) findViewById(R.id.vs2);
vs3 = (TextView) findViewById(R.id.vs3);
vs4 = (TextView) findViewById(R.id.vs4);
vs5 = (TextView) findViewById(R.id.vs5);
vs6 = (TextView) findViewById(R.id.vs6);
vs7 = (TextView) findViewById(R.id.vs7);
vs8 = (TextView) findViewById(R.id.vs8);
vs9 = (TextView) findViewById(R.id.vs9);
vs10 = (TextView) findViewById(R.id.vs10);
vs11 = (TextView) findViewById(R.id.vs11);
vs12 = (TextView) findViewById(R.id.vs12);
vs13 = (TextView) findViewById(R.id.vs13);
vs14 = (TextView) findViewById(R.id.vs14);
vs15 = (TextView) findViewById(R.id.vs15);
vs16 = (TextView) findViewById(R.id.vs16);
vs17 = (TextView) findViewById(R.id.vs17);
vs18 = (TextView) findViewById(R.id.vs18);
va1 = (TextView) findViewById(R.id.va1);
va2 = (TextView) findViewById(R.id.va2);
va3 = (TextView) findViewById(R.id.va3);
va4 = (TextView) findViewById(R.id.va4);
va5 = (TextView) findViewById(R.id.va5);
va6 = (TextView) findViewById(R.id.va6);
va7 = (TextView) findViewById(R.id.va7);
va8 = (TextView) findViewById(R.id.va8);
va9 = (TextView) findViewById(R.id.va9);
va10 = (TextView) findViewById(R.id.va10);
va11 = (TextView) findViewById(R.id.va11);
va12 = (TextView) findViewById(R.id.va12);
va13 = (TextView) findViewById(R.id.va13);
va14 = (TextView) findViewById(R.id.va14);
va15 = (TextView) findViewById(R.id.va15);
va16 = (TextView) findViewById(R.id.va16);
va17 = (TextView) findViewById(R.id.va17);
va18 = (TextView) findViewById(R.id.va18);[/syntax]
Re: Урок 8. Работаем с элементами экрана из кода
Здравствуйте altwin,altwin писал(а):http://kostin.ws/java/java-loops.htmlDazz1e писал(а):Добрый день форумчане!
У меня имеется вопрос. Существует куча элементов экрана типа TextView c id vi1, vi2, vi3 и т.д.
Можно ли это как то компактнее выполнить?
Ибо выходит не очень красиво.
[syntax=java] vi1 = (TextView) findViewById(R.id.vi1);
vi2 = (TextView) findViewById(R.id.vi2);
vi3 = (TextView) findViewById(R.id.vi3);
vi4 = (TextView) findViewById(R.id.vi4);
vi5 = (TextView) findViewById(R.id.vi5);
vi6 = (TextView) findViewById(R.id.vi6);
vi7 = (TextView) findViewById(R.id.vi7);
vi8 = (TextView) findViewById(R.id.vi8);
vi9 = (TextView) findViewById(R.id.vi9);
vi10 = (TextView) findViewById(R.id.vi10);
vi11 = (TextView) findViewById(R.id.vi11);
vi12 = (TextView) findViewById(R.id.vi12);
vi13 = (TextView) findViewById(R.id.vi13);
vi14 = (TextView) findViewById(R.id.vi14);
vi15 = (TextView) findViewById(R.id.vi15);
vi16 = (TextView) findViewById(R.id.vi16);
vi17 = (TextView) findViewById(R.id.vi17);
vi18 = (TextView) findViewById(R.id.vi18);
vn1 = (TextView) findViewById(R.id.vn1);
vn2 = (TextView) findViewById(R.id.vn2);
vn3 = (TextView) findViewById(R.id.vn3);
vn4 = (TextView) findViewById(R.id.vn4);
vn5 = (TextView) findViewById(R.id.vn5);
vn6 = (TextView) findViewById(R.id.vn6);
vn7 = (TextView) findViewById(R.id.vn7);
vn8 = (TextView) findViewById(R.id.vn8);
vn9 = (TextView) findViewById(R.id.vn9);
vn10 = (TextView) findViewById(R.id.vn10);
vn11 = (TextView) findViewById(R.id.vn11);
vn12 = (TextView) findViewById(R.id.vn12);
vn13 = (TextView) findViewById(R.id.vn13);
vn14 = (TextView) findViewById(R.id.vn14);
vn15 = (TextView) findViewById(R.id.vn15);
vn16 = (TextView) findViewById(R.id.vn16);
vn17 = (TextView) findViewById(R.id.vn17);
vn18 = (TextView) findViewById(R.id.vn18);
vs1 = (TextView) findViewById(R.id.vs1);
vs2 = (TextView) findViewById(R.id.vs2);
vs3 = (TextView) findViewById(R.id.vs3);
vs4 = (TextView) findViewById(R.id.vs4);
vs5 = (TextView) findViewById(R.id.vs5);
vs6 = (TextView) findViewById(R.id.vs6);
vs7 = (TextView) findViewById(R.id.vs7);
vs8 = (TextView) findViewById(R.id.vs8);
vs9 = (TextView) findViewById(R.id.vs9);
vs10 = (TextView) findViewById(R.id.vs10);
vs11 = (TextView) findViewById(R.id.vs11);
vs12 = (TextView) findViewById(R.id.vs12);
vs13 = (TextView) findViewById(R.id.vs13);
vs14 = (TextView) findViewById(R.id.vs14);
vs15 = (TextView) findViewById(R.id.vs15);
vs16 = (TextView) findViewById(R.id.vs16);
vs17 = (TextView) findViewById(R.id.vs17);
vs18 = (TextView) findViewById(R.id.vs18);
va1 = (TextView) findViewById(R.id.va1);
va2 = (TextView) findViewById(R.id.va2);
va3 = (TextView) findViewById(R.id.va3);
va4 = (TextView) findViewById(R.id.va4);
va5 = (TextView) findViewById(R.id.va5);
va6 = (TextView) findViewById(R.id.va6);
va7 = (TextView) findViewById(R.id.va7);
va8 = (TextView) findViewById(R.id.va8);
va9 = (TextView) findViewById(R.id.va9);
va10 = (TextView) findViewById(R.id.va10);
va11 = (TextView) findViewById(R.id.va11);
va12 = (TextView) findViewById(R.id.va12);
va13 = (TextView) findViewById(R.id.va13);
va14 = (TextView) findViewById(R.id.va14);
va15 = (TextView) findViewById(R.id.va15);
va16 = (TextView) findViewById(R.id.va16);
va17 = (TextView) findViewById(R.id.va17);
va18 = (TextView) findViewById(R.id.va18);[/syntax]
Это конечно классно, но как это выполнить?! Конкатенетить?
Re: Урок 8. Работаем с элементами экрана из кода
а что вас смущает ? Отвечая себе на этот вопрос вы всегда найдете решение, конкатенация строк, даст вам строку, а вам нужен id ресурса, для этого существует метод - getIdentifierDazz1e писал(а):Здравствуйте altwin,altwin писал(а):http://kostin.ws/java/java-loops.htmlDazz1e писал(а):Добрый день форумчане!
У меня имеется вопрос. Существует куча элементов экрана типа TextView c id vi1, vi2, vi3 и т.д.
Можно ли это как то компактнее выполнить?
Ибо выходит не очень красиво.
[syntax=java] vi1 = (TextView) findViewById(R.id.vi1);
vi2 = (TextView) findViewById(R.id.vi2);
vi3 = (TextView) findViewById(R.id.vi3);
vi4 = (TextView) findViewById(R.id.vi4);
vi5 = (TextView) findViewById(R.id.vi5);
vi6 = (TextView) findViewById(R.id.vi6);
vi7 = (TextView) findViewById(R.id.vi7);
vi8 = (TextView) findViewById(R.id.vi8);
vi9 = (TextView) findViewById(R.id.vi9);
vi10 = (TextView) findViewById(R.id.vi10);
vi11 = (TextView) findViewById(R.id.vi11);
vi12 = (TextView) findViewById(R.id.vi12);
vi13 = (TextView) findViewById(R.id.vi13);
vi14 = (TextView) findViewById(R.id.vi14);
vi15 = (TextView) findViewById(R.id.vi15);
vi16 = (TextView) findViewById(R.id.vi16);
vi17 = (TextView) findViewById(R.id.vi17);
vi18 = (TextView) findViewById(R.id.vi18);
vn1 = (TextView) findViewById(R.id.vn1);
vn2 = (TextView) findViewById(R.id.vn2);
vn3 = (TextView) findViewById(R.id.vn3);
vn4 = (TextView) findViewById(R.id.vn4);
vn5 = (TextView) findViewById(R.id.vn5);
vn6 = (TextView) findViewById(R.id.vn6);
vn7 = (TextView) findViewById(R.id.vn7);
vn8 = (TextView) findViewById(R.id.vn8);
vn9 = (TextView) findViewById(R.id.vn9);
vn10 = (TextView) findViewById(R.id.vn10);
vn11 = (TextView) findViewById(R.id.vn11);
vn12 = (TextView) findViewById(R.id.vn12);
vn13 = (TextView) findViewById(R.id.vn13);
vn14 = (TextView) findViewById(R.id.vn14);
vn15 = (TextView) findViewById(R.id.vn15);
vn16 = (TextView) findViewById(R.id.vn16);
vn17 = (TextView) findViewById(R.id.vn17);
vn18 = (TextView) findViewById(R.id.vn18);
vs1 = (TextView) findViewById(R.id.vs1);
vs2 = (TextView) findViewById(R.id.vs2);
vs3 = (TextView) findViewById(R.id.vs3);
vs4 = (TextView) findViewById(R.id.vs4);
vs5 = (TextView) findViewById(R.id.vs5);
vs6 = (TextView) findViewById(R.id.vs6);
vs7 = (TextView) findViewById(R.id.vs7);
vs8 = (TextView) findViewById(R.id.vs8);
vs9 = (TextView) findViewById(R.id.vs9);
vs10 = (TextView) findViewById(R.id.vs10);
vs11 = (TextView) findViewById(R.id.vs11);
vs12 = (TextView) findViewById(R.id.vs12);
vs13 = (TextView) findViewById(R.id.vs13);
vs14 = (TextView) findViewById(R.id.vs14);
vs15 = (TextView) findViewById(R.id.vs15);
vs16 = (TextView) findViewById(R.id.vs16);
vs17 = (TextView) findViewById(R.id.vs17);
vs18 = (TextView) findViewById(R.id.vs18);
va1 = (TextView) findViewById(R.id.va1);
va2 = (TextView) findViewById(R.id.va2);
va3 = (TextView) findViewById(R.id.va3);
va4 = (TextView) findViewById(R.id.va4);
va5 = (TextView) findViewById(R.id.va5);
va6 = (TextView) findViewById(R.id.va6);
va7 = (TextView) findViewById(R.id.va7);
va8 = (TextView) findViewById(R.id.va8);
va9 = (TextView) findViewById(R.id.va9);
va10 = (TextView) findViewById(R.id.va10);
va11 = (TextView) findViewById(R.id.va11);
va12 = (TextView) findViewById(R.id.va12);
va13 = (TextView) findViewById(R.id.va13);
va14 = (TextView) findViewById(R.id.va14);
va15 = (TextView) findViewById(R.id.va15);
va16 = (TextView) findViewById(R.id.va16);
va17 = (TextView) findViewById(R.id.va17);
va18 = (TextView) findViewById(R.id.va18);[/syntax]
Это конечно классно, но как это выполнить?! Конкатенетить?
[syntax=java5]
Resources res = getResources(); //if you are in an activity
for (int i = 1; i < 13; i++) {
String idName = "imageView" + i;
buttons = (ImageView) findViewById(res.getIdentifier(idName, "id, getPackageName()));
}
[/syntax]
Re: Урок 8. Работаем с элементами экрана из кода
можно вьюшки в массив положить и их перебирать почти так же
Код: Выделить всё
Context mContext = getActivity().getBaseContext() ;
mRes = mContext.getResources();
String[] idOfButtons={"btn0","btn1", "btn2", "btn3", "btn4"};
for (int position = 0; position < idOfButtons.length; position++) {
Integer btnId = mRes.getIdentifier(idOfButtons[position], "id", ( getActivity()).getBaseContext().getPackageName());
ImageButton btn = (ImageButton) v.findViewById(btnId);
btn.setOnClickListener(this.onClick);
}
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: Урок 8. Работаем с элементами экрана из кода
altwin писал(а):а что вас смущает ? Отвечая себе на этот вопрос вы всегда найдете решение, конкатенация строк, даст вам строку, а вам нужен id ресурса, для этого существует метод - getIdentifierDazz1e писал(а):Здравствуйте altwin,altwin писал(а):http://kostin.ws/java/java-loops.htmlDazz1e писал(а):Добрый день форумчане!
У меня имеется вопрос. Существует куча элементов экрана типа TextView c id vi1, vi2, vi3 и т.д.
Можно ли это как то компактнее выполнить?
Ибо выходит не очень красиво.
[syntax=java] vi1 = (TextView) findViewById(R.id.vi1);
vi2 = (TextView) findViewById(R.id.vi2);
vi3 = (TextView) findViewById(R.id.vi3);
vi4 = (TextView) findViewById(R.id.vi4);
vi5 = (TextView) findViewById(R.id.vi5);
vi6 = (TextView) findViewById(R.id.vi6);
vi7 = (TextView) findViewById(R.id.vi7);
vi8 = (TextView) findViewById(R.id.vi8);
vi9 = (TextView) findViewById(R.id.vi9);
vi10 = (TextView) findViewById(R.id.vi10);
vi11 = (TextView) findViewById(R.id.vi11);
vi12 = (TextView) findViewById(R.id.vi12);
vi13 = (TextView) findViewById(R.id.vi13);
vi14 = (TextView) findViewById(R.id.vi14);
vi15 = (TextView) findViewById(R.id.vi15);
vi16 = (TextView) findViewById(R.id.vi16);
vi17 = (TextView) findViewById(R.id.vi17);
vi18 = (TextView) findViewById(R.id.vi18);
vn1 = (TextView) findViewById(R.id.vn1);
vn2 = (TextView) findViewById(R.id.vn2);
vn3 = (TextView) findViewById(R.id.vn3);
vn4 = (TextView) findViewById(R.id.vn4);
vn5 = (TextView) findViewById(R.id.vn5);
vn6 = (TextView) findViewById(R.id.vn6);
vn7 = (TextView) findViewById(R.id.vn7);
vn8 = (TextView) findViewById(R.id.vn8);
vn9 = (TextView) findViewById(R.id.vn9);
vn10 = (TextView) findViewById(R.id.vn10);
vn11 = (TextView) findViewById(R.id.vn11);
vn12 = (TextView) findViewById(R.id.vn12);
vn13 = (TextView) findViewById(R.id.vn13);
vn14 = (TextView) findViewById(R.id.vn14);
vn15 = (TextView) findViewById(R.id.vn15);
vn16 = (TextView) findViewById(R.id.vn16);
vn17 = (TextView) findViewById(R.id.vn17);
vn18 = (TextView) findViewById(R.id.vn18);
vs1 = (TextView) findViewById(R.id.vs1);
vs2 = (TextView) findViewById(R.id.vs2);
vs3 = (TextView) findViewById(R.id.vs3);
vs4 = (TextView) findViewById(R.id.vs4);
vs5 = (TextView) findViewById(R.id.vs5);
vs6 = (TextView) findViewById(R.id.vs6);
vs7 = (TextView) findViewById(R.id.vs7);
vs8 = (TextView) findViewById(R.id.vs8);
vs9 = (TextView) findViewById(R.id.vs9);
vs10 = (TextView) findViewById(R.id.vs10);
vs11 = (TextView) findViewById(R.id.vs11);
vs12 = (TextView) findViewById(R.id.vs12);
vs13 = (TextView) findViewById(R.id.vs13);
vs14 = (TextView) findViewById(R.id.vs14);
vs15 = (TextView) findViewById(R.id.vs15);
vs16 = (TextView) findViewById(R.id.vs16);
vs17 = (TextView) findViewById(R.id.vs17);
vs18 = (TextView) findViewById(R.id.vs18);
va1 = (TextView) findViewById(R.id.va1);
va2 = (TextView) findViewById(R.id.va2);
va3 = (TextView) findViewById(R.id.va3);
va4 = (TextView) findViewById(R.id.va4);
va5 = (TextView) findViewById(R.id.va5);
va6 = (TextView) findViewById(R.id.va6);
va7 = (TextView) findViewById(R.id.va7);
va8 = (TextView) findViewById(R.id.va8);
va9 = (TextView) findViewById(R.id.va9);
va10 = (TextView) findViewById(R.id.va10);
va11 = (TextView) findViewById(R.id.va11);
va12 = (TextView) findViewById(R.id.va12);
va13 = (TextView) findViewById(R.id.va13);
va14 = (TextView) findViewById(R.id.va14);
va15 = (TextView) findViewById(R.id.va15);
va16 = (TextView) findViewById(R.id.va16);
va17 = (TextView) findViewById(R.id.va17);
va18 = (TextView) findViewById(R.id.va18);[/syntax]
Это конечно классно, но как это выполнить?! Конкатенетить?
[syntax=java5]
Resources res = getResources(); //if you are in an activity
for (int i = 1; i < 13; i++) {
String idName = "imageView" + i;
buttons = (ImageView) findViewById(res.getIdentifier(idName, "id, getPackageName()));
}
[/syntax]
У меня вопрос, как вы инициализировали buttons[]?
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Урок 8. Работаем с элементами экрана из кода
По мне, так тут изначально выбрано не "красивое" решение. Даже если вы сможете записать ссылки на все TextView в массив, дальнейшее их использование будет настоящим мучением.Dazz1e писал(а):...Можно ли это как то компактнее выполнить?
Ибо выходит не очень красиво...
Что вы вообще хотели получить в итоге?
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
Re: Урок 8. Работаем с элементами экрана из кода
В лэйблы, вводятся данные из БД. И вводить их можно будет циклом do while. Решение вывода данных, с использованием массива и цикла я знаю, но использование массива и цикла для присвоения значений не выходит, т.к. я не знаком в совершенстве с Java да и со всем программированием в том числе. Да и циклы с массивами недолюбливаю.KamiSempai писал(а):По мне, так тут изначально выбрано не "красивое" решение. Даже если вы сможете записать ссылки на все TextView в массив, дальнейшее их использование будет настоящим мучением.Dazz1e писал(а):...Можно ли это как то компактнее выполнить?
Ибо выходит не очень красиво...
Что вы вообще хотели получить в итоге?
- Тихон Котов
- Сообщения: 15
- Зарегистрирован: 21 авг 2014, 13:13
Re: Урок 8. Работаем с элементами экрана из кода
Из текста урока № 8: "Давайте откроем main.xml, для TextView укажем ID = @+id/myText и сохраним"
может быть, поправить выделенное - закавычить?? Тем более, ниже на скриншоте - именно так?
может быть, поправить выделенное - закавычить?? Тем более, ниже на скриншоте - именно так?
- Тихон Котов
- Сообщения: 15
- Зарегистрирован: 21 авг 2014, 13:13
Re: Урок 8. Работаем с элементами экрана из кода
Не удается построить приложение из восьмого урока... Создавал его заново уже много раз ... все что-то не так!
Примерно в половине случаев во вновь созданном приложении вдруг отрастает ошибка - "AndroidManifest.xml file missing!", хотя этот файл присутствует и прекрасно выглядит...
Как это понять и как лечить ?
И, если не сложно, - добавьте в конце урока текст приложение P0081_ViewBuild целиком для копирования и вставки в новый проект...
Спасибо.
Примерно в половине случаев во вновь созданном приложении вдруг отрастает ошибка - "AndroidManifest.xml file missing!", хотя этот файл присутствует и прекрасно выглядит...
Как это понять и как лечить ?
И, если не сложно, - добавьте в конце урока текст приложение P0081_ViewBuild целиком для копирования и вставки в новый проект...
Спасибо.