Страница 1 из 1

Проблема с отображением текста

Добавлено: 10 фев 2014, 09:34
IriDolG
Здравствуйте, специалисты!
Я пока новичок, но уроки с сайта очень заинтересовали, пробую реализовать знания на практике. Возникло ряд проблем.
Во-первых, не получается сделать текст в TextActivity видимым (так как хочу показывать разный текст при нажатии на разные кнопки). Вот такой код:

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

public class MainActivity extends Activity implements OnClickListener{
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		
	    final Button btn1 = (Button)findViewById(R.id.btn1);
	    final Button btn2 = (Button)findViewById(R.id.btn2);
	    final Button btn3 = (Button)findViewById(R.id.btn3);
	    final Button btn4 = (Button)findViewById(R.id.btn4);
	    final Button btn5 = (Button)findViewById(R.id.btn5);
	    final Button btn6 = (Button)findViewById(R.id.btn6);
	    final Button btn7 = (Button)findViewById(R.id.btn7);
	    final Button btn8 = (Button)findViewById(R.id.btn8);
	    
	    btn1.setOnClickListener(this);
	    btn2.setOnClickListener(this);
	    btn3.setOnClickListener(this);
	    btn4.setOnClickListener(this);
	    btn5.setOnClickListener(this);
	    btn6.setOnClickListener(this);
	    btn7.setOnClickListener(this);
	    btn8.setOnClickListener(this);
	    
	    TextView nstep1=(TextView)findViewById(R.id.nstep1);
	    TextView tstep1=(TextView)findViewById(R.id.tstep1);
	    
	    
	  }

	  @Override
	  public void onClick(View v) {
	    switch (v.getId()) {
	    case R.id.btn1:
	    	  Intent intent1 = new Intent(this, TextActivity.class);
	          startActivity(intent1);
	          TextView nstep1=(TextView)findViewById(R.id.nstep1);
	          nstep1.setVisibility(View.VISIBLE);
	      // TODO Call second activity
	      break;
	    case R.id.btn2:
	      break;
	    case R.id.btn3:
		      break;
	    case R.id.btn4:
		      break;
	    case R.id.btn5:
		      break;
	    case R.id.btn6:
		      break;
	    case R.id.btn7:
		      break;
	    case R.id.btn8:
		      break;
	      
	    }
	  }
	}

Но при попытке отладки на планшете черный экран при нажатии на кнопку (сама кнопка тестируется хорошо до того, как выставлено "сделать текст видимым".

Вторая проблема не дает покоя уже несколько дней - не получается считать текстовые файлы различных форматов. К примеру, почему-то не работает следующий код:

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

public class QuizHelpActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.help);
		
		InputStream iFile=getResources().openRawResource(R.raw.step1);
		TextView helpText=(TextView) findViewById(R.id.textstep);
		String strFile=inputStreamToString(iFile);
		helpText.setText(strFile);
	}

	private String inputStreamToString(InputStream iFile) {
		// TODO Auto-generated method stub
		return null;
	}


	}


Очень хотела бы узнать свои ошибки :(

Re: Проблема с отображением текста

Добавлено: 10 фев 2014, 10:11
klblk
1. Не понятно что значит сделать текст видимым? изначально он не видимый?
так как хочу показывать разный текст при нажатии на разные кнопки
При нажатии на кнопку делаете nstep1.setText("myText").

2. Попробуйте, что-нибудь тут: http://stackoverflow.com/questions/4087 ... ource-file

Re: Проблема с отображением текста

Добавлено: 10 фев 2014, 10:31
IriDolG
1. Я в layout сделала TextView невидимым, правда, в TextActivity не прописывала этого.
А можно ли как-то подключить созданные String с текстом, чтобы в указанном выше TextView отображался разный текст при нажатии на кнопки? (Просто объем текста довольно большой, чтобы помещать в setText). Прошу прощения, если не так что-то понимаю..

Re: Проблема с отображением текста

Добавлено: 10 фев 2014, 10:42
IriDolG
По какой-то причине после помещения setText кнопка вообще отказалась нажиматься.. Возможно, стоит дописать что-то в TextActivity? Вот такой отрезок дописанного кода интента с кнопкой:

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

 @Override
	  public void onClick(View v) {
	    switch (v.getId()) {
	    case R.id.btn1:
	    	  Intent intent = new Intent(this, TextActivity.class);
	    	  TextView nstep1=(TextView)findViewById(R.id.nstep1);
	          TextView tstep1=(TextView)findViewById(R.id.tstep1);
	          nstep1.setText("myText");
	          startActivity(intent);

Re: Проблема с отображением текста

Добавлено: 10 фев 2014, 10:44
Timurovic
IriDolG писал(а):1. Я в layout сделала TextView невидимым, правда, в TextActivity не прописывала этого.
А можно ли как-то подключить созданные String с текстом, чтобы в указанном выше TextView отображался разный текст при нажатии на кнопки? (Просто объем текста довольно большой, чтобы помещать в setText). Прошу прощения, если не так что-то понимаю..
1. Можно использовать ресурсы, например: <string name="text">текст переносами</string>
2. Можно использовать текстовый файл и оттуда считывать

Re: Проблема с отображением текста

Добавлено: 10 фев 2014, 10:54
IriDolG
Timurovic писал(а):
IriDolG писал(а): 1. Можно использовать ресурсы, например: <string name="text">текст переносами</string>
Наверно, это немного не то. Я имею в виду, что при нажатии разных кнопок выводится разный текст в одной активити.

Re: Проблема с отображением текста

Добавлено: 10 фев 2014, 10:57
klblk
как написали выше, строки можно из ресурсов получить getString(R.string.myString) (где myString строка прописанная в strings.xml)
IriDolG писал(а):По какой-то причине после помещения setText кнопка вообще отказалась нажиматься.. Возможно, стоит дописать что-то в TextActivity? Вот такой отрезок дописанного кода интента с кнопкой:

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

 @Override
	  public void onClick(View v) {
	    switch (v.getId()) {
	    case R.id.btn1:
	    	  Intent intent = new Intent(this, TextActivity.class);
	    	  TextView nstep1=(TextView)findViewById(R.id.nstep1);
	          TextView tstep1=(TextView)findViewById(R.id.tstep1);
	          nstep1.setText("myText");
	          startActivity(intent);
Все еще не ясно то что вы желаете получить. Если нужно передать текст в другое Activity, то это делается спомощью extras:
http://startandroid.ru/ru/uroki/vse-uro ... ntent.html

Re: Проблема с отображением текста

Добавлено: 10 фев 2014, 11:02
IriDolG
klblk, я создала разные Strings с текстами. Хочу, чтобы при нажатии на кнопки MainActivity осуществлялся переход в TextActivity, но при этом показывался разный текст (то есть в TextView вставлялись разные String)

Re: Проблема с отображением текста

Добавлено: 10 фев 2014, 11:04
klblk
IriDolG писал(а):klblk, я создала разные Strings с текстами. Хочу, чтобы при нажатии на кнопки MainActivity осуществлялся переход в TextActivity, но при этом показывался разный текст (то есть в TextView вставлялись разные String)
тогда все правильно, смотрите ссылку на урок выше

Re: Проблема с отображением текста

Добавлено: 10 фев 2014, 12:03
IriDolG
klblk, в этом примере используется EditText. А каким методом передать уже созданные стринг в текствью другой активити?

Re: Проблема с отображением текста

Добавлено: 10 фев 2014, 12:27
klblk
IriDolG писал(а):klblk, в этом примере используется EditText. А каким методом передать уже созданные стринг в текствью другой активити?
из EditText'ты мы получаем обычную строку. Не имеет значение как мы получаем, передать можно любую строку.
[syntax=java] intent.putExtra("my_string_tag", myString);[/syntax]
myString - это ваша строка, как вы ее получаете это уже другой вопрос, с помощью getString из ресурсов или еще как-то.

потом в TextActivity:
[syntax=java]String myString= intent.getStringExtra("my_string_tag");[/syntax]

Re: Проблема с отображением текста

Добавлено: 10 фев 2014, 12:35
IriDolG
При написании предложенного кода приложение дает сбой... Хотя по всей логике составлено все верно.

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

 switch (v.getId()) {
	    case R.id.btn1:
	    	  Intent intent = new Intent(this, TextActivity.class); 
              TextView nstep=(TextView)findViewById(R.id.nstep); 
               
              nstep.setText("текст"); 
              startActivity(intent);
	          

Re: Проблема с отображением текста

Добавлено: 10 фев 2014, 12:39
klblk
я не вижу тут предложенного кода... зачем вообще в onClick какой-то TextView, где putExtra, где лог с ошибкой? в интент нужно передать строку, в новой активити ее получить и тамже сделать setText для TextView.

Re: Проблема с отображением текста

Добавлено: 10 фев 2014, 12:47
IriDolG
Так ведь в TextActivity должен быть ответ для разных интентов - кнопок то ведь несколько.. Я немного запуталась - в "my_string_tag" что нужно писать? Он ведь должен быть уникальным для каждой кнопки?
PS: прошу прощения за свою назойливость.

Re: Проблема с отображением текста

Добавлено: 10 фев 2014, 13:08
IriDolG
Ух, разобралась! klblk, огромное Вам спасибо!