Как связать текстовое представление с моим XML-макетом - PullRequest
0 голосов
/ 06 июля 2011

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

public class facts extends Activity {

//implements android.view.View.OnClickListener {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.facts);
    setTitle("Buy - Find a carpool!");



    Random generator= new Random();
    int num;
    String[] quotes;
    quotes= new String[15];
    quotes[0]= "test1)";
    quotes[1]= "test2";
    TextView tv = new TextView(this);
    num=generator.nextInt(15);
    tv.setText(quotes[num]);
    setContentView(R.layout.facts);

Мой код XML

      <TextView
 android:gravity="center_vertical|center_horizontal"
 android:id="@+id/factslist"
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android.layout_column="15" 
      android:layout_centerVertical="true"
  android:layout_centerHorizontal="true"/>

Кто-нибудь знает, как это сделать?

Ответы [ 3 ]

1 голос
/ 06 июля 2011

Посмотрите на это: Объявление макета . Вы должны использовать findViewById (), чтобы получить экземпляр вашего TextView. Не создавайте это сами. Кроме того, вам не нужно снова настраивать ContentView после изменения.

1 голос
/ 06 июля 2011

Вы помещаете TextView в свой файл facts.xml и затем используете ...

TextView tv = (TextView) findViewById(R.id.myTextView);
1 голос
/ 06 июля 2011

Почему вы создаете TextView в коде:

TextView tv = new TextView(this);

Почему бы не иметь TextView в вашем XML-файле (facts.xml)? Возможно, я не понимаю ваш вопрос. Не могли бы вы уточнить, что вы подразумеваете под "я хочу, чтобы он отображался с моим макетом в файле XML".

Если вы хотите, чтобы TextView был определен в .xml, добавьте элемент <TextView> в файл facts.xml:

   <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:id="@+id/text"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
              android:text="Hello, I am a TextView" />
</LinearLayout>

Так что вместо этого кода:

Random generator= new Random();
int num;
String[] quotes;
quotes= new String[15];
quotes[0]= "test1)";
quotes[1]= "test2";
TextView tv = new TextView(this);
num=generator.nextInt(15);
tv.setText(quotes[num]);
setContentView(R.layout.facts);

Вы должны иметь:

Random generator= new Random();
int num;
String[] quotes;
quotes= new String[15];
quotes[0]= "test1)";
quotes[1]= "test2";

TextView tv = (TextView) findViewById(R.id.factslist);

num=generator.nextInt(15);
tv.setText(quotes[num]);

Видите ли вы, как вы получаете ссылку на TextView в своем XML-файле на основе его идентификатора, а затем устанавливаете значение этого идентификатора? Я также не думаю, что вам нужно называть это дважды:

setContentView(R.layout.facts);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...