Страница 9 из 13

Re: Урок 8. Работаем с элементами экрана из кода

Добавлено: 09 июн 2014, 16:06
n0tb0dy
Добрый день!

Столкнулся с одной проблемкой. Если пользователь устанавливает размер системного шрифта на большой или огромный, то естественно веся разметка лезет вкривь и вкось. Подскажите пожалуйста можно как то установить из кода приложения размер системного шрифта, чтобы он был нормальный 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]

Re: Урок 8. Работаем с элементами экрана из кода

Добавлено: 09 июн 2014, 17:30
KamiSempai
Если разметка едет, проблемы с разметкой. Разные размеры экранов тоже костылями править собираетесь?

Re: Урок 8. Работаем с элементами экрана из кода

Добавлено: 09 июн 2014, 21:46
n0tb0dy
собственно у многих приложений такая проблема
у того же самого вашего Traning Note та же самая проблема
если установить шрифт на очень большой то разметка съезжает

Изображение

Изображение

так что у вас та же самая проблема что и у меня :)

и так же у многих видно что размер шрифта не меняется, даже при смене системного

вопрос прежний как этого добиться

Re: Урок 8. Работаем с элементами экрана из кода

Добавлено: 10 июн 2014, 09:39
KamiSempai
Я его уже год не обновлял. Скоро выпускаю обновление, сделанное по всем канонам андроида.

Re: Урок 8. Работаем с элементами экрана из кода

Добавлено: 10 июн 2014, 10:05
n0tb0dy
вопрос то был не в этом :)

просто интересно как можно установить FONT_SCALE для своего приложения в нужное значение

Re: Урок 8. Работаем с элементами экрана из кода

Добавлено: 10 июн 2014, 10:20
KamiSempai
Если брать мой случай, нужно сделать выравнивание текста по центру. Плюс ко всему, можно задать разные размеры для разных размеров экрана. Например, для маленьких экранов сделать заголовки чуть меньше чем для больших экранов. Делается это через разные values.

Re: Урок 8. Работаем с элементами экрана из кода

Добавлено: 10 июн 2014, 14:22
n0tb0dy
это я знаю, что можно через разные файлов ресурсов для разных размеров экранов и плотностей пикселей,
но часто такое может быть что даже если размер шрифта разный, если пользователь выберет в настройках огромный шрифт, то все равно разметка может поехать

Re: Урок 8. Работаем с элементами экрана из кода

Добавлено: 20 июн 2014, 13:49
anpatu
Ребят, такая проблема: делал все в точности, как Виталий до момента, когда мы начали устанавливать значение текста в 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. Работаем с элементами экрана из кода

Добавлено: 20 июн 2014, 18:12
Donart
Подскажите, что делать? Заранее спасибо
Нужно выкладывать код и логи.
Может Вы используете не тот layout файл?

Re: Урок 8. Работаем с элементами экрана из кода

Добавлено: 22 июн 2014, 22:44
ZumbiAzul
Ребят, такая проблема: делал все в точности, как Виталий до момента, когда мы начали устанавливать значение текста в 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;
		}
	}

}

При запуске приложения появляется указанный Toast: "Oooops, something went wrong..."

Я, конечно, подразумеваю, что это из-за обновления 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");
добавить в метод onCreateView класса PlaceholderFragment, причем с добавлением rootView перед findViewById(R.id.myText)...

Теперь при запуске на экране "HAHAHA" :D

Re: Урок 8. Работаем с элементами экрана из кода

Добавлено: 07 авг 2014, 14:34
Dazz1e
Добрый день форумчане!
У меня имеется вопрос. Существует куча элементов экрана типа 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. Работаем с элементами экрана из кода

Добавлено: 07 авг 2014, 14:39
altwin
Dazz1e писал(а):Добрый день форумчане!
У меня имеется вопрос. Существует куча элементов экрана типа 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]
http://kostin.ws/java/java-loops.html

Re: Урок 8. Работаем с элементами экрана из кода

Добавлено: 07 авг 2014, 14:51
Dazz1e
altwin писал(а):
Dazz1e писал(а):Добрый день форумчане!
У меня имеется вопрос. Существует куча элементов экрана типа 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]
http://kostin.ws/java/java-loops.html
Здравствуйте altwin,
Это конечно классно, но как это выполнить?! Конкатенетить?

Re: Урок 8. Работаем с элементами экрана из кода

Добавлено: 07 авг 2014, 17:14
altwin
Dazz1e писал(а):
altwin писал(а):
Dazz1e писал(а):Добрый день форумчане!
У меня имеется вопрос. Существует куча элементов экрана типа 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]
http://kostin.ws/java/java-loops.html
Здравствуйте altwin,
Это конечно классно, но как это выполнить?! Конкатенетить?
а что вас смущает ? Отвечая себе на этот вопрос вы всегда найдете решение, конкатенация строк, даст вам строку, а вам нужен id ресурса, для этого существует метод - getIdentifier
[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. Работаем с элементами экрана из кода

Добавлено: 07 авг 2014, 23:50
Foenix
можно вьюшки в массив положить и их перебирать почти так же

Код: Выделить всё

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);

                        }

Re: Урок 8. Работаем с элементами экрана из кода

Добавлено: 08 авг 2014, 10:26
Dazz1e
altwin писал(а):
Dazz1e писал(а):
altwin писал(а):
Dazz1e писал(а):Добрый день форумчане!
У меня имеется вопрос. Существует куча элементов экрана типа 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]
http://kostin.ws/java/java-loops.html
Здравствуйте altwin,
Это конечно классно, но как это выполнить?! Конкатенетить?
а что вас смущает ? Отвечая себе на этот вопрос вы всегда найдете решение, конкатенация строк, даст вам строку, а вам нужен id ресурса, для этого существует метод - getIdentifier
[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[]?

Re: Урок 8. Работаем с элементами экрана из кода

Добавлено: 08 авг 2014, 14:43
KamiSempai
Dazz1e писал(а):...Можно ли это как то компактнее выполнить?
Ибо выходит не очень красиво...
По мне, так тут изначально выбрано не "красивое" решение. Даже если вы сможете записать ссылки на все TextView в массив, дальнейшее их использование будет настоящим мучением.
Что вы вообще хотели получить в итоге?

Re: Урок 8. Работаем с элементами экрана из кода

Добавлено: 08 авг 2014, 16:21
Dazz1e
KamiSempai писал(а):
Dazz1e писал(а):...Можно ли это как то компактнее выполнить?
Ибо выходит не очень красиво...
По мне, так тут изначально выбрано не "красивое" решение. Даже если вы сможете записать ссылки на все TextView в массив, дальнейшее их использование будет настоящим мучением.
Что вы вообще хотели получить в итоге?
В лэйблы, вводятся данные из БД. И вводить их можно будет циклом do while. Решение вывода данных, с использованием массива и цикла я знаю, но использование массива и цикла для присвоения значений не выходит, т.к. я не знаком в совершенстве с Java да и со всем программированием в том числе. Да и циклы с массивами недолюбливаю.

Re: Урок 8. Работаем с элементами экрана из кода

Добавлено: 22 авг 2014, 12:04
Тихон Котов
Из текста урока № 8: "Давайте откроем main.xml, для TextView укажем ID = @+id/myText и сохраним"
может быть, поправить выделенное - закавычить?? Тем более, ниже на скриншоте - именно так?

Re: Урок 8. Работаем с элементами экрана из кода

Добавлено: 22 авг 2014, 14:07
Тихон Котов
Не удается построить приложение из восьмого урока... Создавал его заново уже много раз ... все что-то не так!
Примерно в половине случаев во вновь созданном приложении вдруг отрастает ошибка - "AndroidManifest.xml file missing!", хотя этот файл присутствует и прекрасно выглядит...
Как это понять и как лечить ?
И, если не сложно, - добавьте в конце урока текст приложение P0081_ViewBuild целиком для копирования и вставки в новый проект...
Спасибо.