2013-05-23 3 views
1

Я пишу свое первое приложение и все еще изучаю Java и XML. В учебнике по андроиде задаются два действия: один, который получает пользовательский ввод, и другое действие, которое просто получает вход и отображает на другом экране. Вторая активность выглядит примерно так:Расширение на уроке Hello World

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    //Get the message from Intent 
    Intent intent = getIntent(); 
    String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE); 


    //Create the text view 
    TextView textView = new TextView(this); 
    textView.setTextSize(40); 
    textView.setText(message); 

    setContentView(textView); 
} 

Мой вопрос заключается в следующем: как я могу использовать «сообщение» в XML вместо этого Java документа? Я хотел бы избежать использования setContentView (textView), потому что я хотел бы добавить больше к экрану активности. Какие решения вы предлагаете?

ответ

3

setContentView() необходимо для загрузки пользовательского интерфейса для вашей деятельности. У вас есть два варианта, чтобы создать основной вид, который вы отправляете в setContentView():

  1. Вы можете создать макет с Java кодом.

  2. Вы можете создать макет в XML-файле.

Обычно второй используется для статического пользовательского интерфейса, а первый используется, когда пользовательский интерфейс более динамичен.

Предлагаю вам ознакомиться с помощью the Official Android Documentation. В частности, вы должны посмотреть на UI Overview для понимания интерфейса Android UI.

Вы также можете быть заинтересованы в использовании string resource для хранения ключей, используемых для «массовки», которые хранятся в Intent, который отправляется в ваш метод onCreate().

2

Я не уверен, что понимаю, но если да, поставьте TextView внутри layout в XML-файле и используйте его в setContentView). Что-то вроде

<?xml version="1.0" encoding="UTF-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/rootLayout" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 
<TextView 
    android:id="@+id/tv1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:text="Your message"/> // it is better to use strings.xml instead of hard-coded strings 
</LinearLayout> 

Скажи это называется myLayout.xml

public class MyClass extends Activity{ 
TextView tv1; 
rotected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.myLayout); 
tv1 = (TextView) findViewById(R.id.tv1); 
} 

Вы не можете добавить в файл XML во время выполнения, но вы теперь могли установить текст в этом TextView все, что вы хотите

public class MyClass extends Activity{ 
TextView tv1; 
rotected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.myLayout); 
tv1 = (TextView) findViewById(R.id.tv1); 
tv1.setText("Other Text"); 
} 

Я надеюсь, что это ответили на ваш вопрос, поскольку я немного смущен точно, что ваш вопрос