2015-12-23 3 views
9

Я учусь Android с http://developer.android.com/index.html, но когда я достигаю http://developer.android.com/training/basics/firstapp/starting-activity.html Отобразите раздел Сообщения, пункт 6 У меня есть сообщение об ошибкеandroid.support.v7.widget.AppCompatTextView не может быть приведен к android.widget.RelativeLayout

android.support.v7.widget.AppCompatTextView cannot be cast to android.widget.RelativeLayout 

Я сделал все шаг за шагом, как это было в учебнике. Так почему это не работает?

DisplayMessageActivity.java 

    package com.example.flover.hellloworld; 

    import android.content.Intent; 
    import android.os.Bundle; 
    import android.support.v7.app.AppCompatActivity; 
    import android.view.Menu; 
    import android.view.MenuItem; 
    import android.widget.RelativeLayout; 
    import android.widget.TextView; 

    public class DisplayMessageActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_display_message); 


     Intent intent = getIntent(); 
     String message = intent.getStringExtra(MyActivity.EXTRA_MESSAGE); 
     TextView textView = new TextView(this); 
     textView.setTextSize(40); 
     textView.setText(message); 

     RelativeLayout layout = (RelativeLayout) findViewById(R.id.content); 
     layout.addView(textView); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu_display_message, 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(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.action_settings) { 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 
} 

activity_display_message.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.example.flover.hellloworld.DisplayMessageActivity"> 

    <TextView 
     android:id="@+id/content" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     ></TextView> 

</RelativeLayout> 

ответ

11

Все, что вам нужно сделать, это Присвоить Id для Relative Layout она должна быть как

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/rl_Container" 
android:layout_width="match_parent" 
android:layout_height="match_parent"> 

<TextView 
    android:id="@+id/content" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"></TextView> 

</RelativeLayout> 

затем просто сделать небольшое изменение в вашей деятельности

public class DisplayMessageActivity extends AppCompatActivity { 
@Override 
protected void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_display_message); 


    Intent intent = getIntent(); 
    String message = intent.getStringExtra(MyActivity.EXTRA_MESSAGE); 
    TextView textView = new TextView(this); 
    textView.setTextSize(40); 
    textView.setText(message); 

    RelativeLayout layout = (RelativeLayout) findViewById(R.id.rl_Container); 
    layout.addView(textView); 
} 


} 
+0

Для меня просто добавление андроида : id к корневому контейнеру макета исправил мою проблему. –

3
RelativeLayout layout = (RelativeLayout) findViewById(R.id.content); 

вызывая problem.because Вы определяете RelativeLayout с идентификатором TextView.

Присвоить

android:id="@+id/content" 

к RelativeLayout. Не для TextView в XML

3

Измените свой макет на это, содержимое идентификатора должно перейти на RelativeLayout, а не TextView.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/content" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context="com.example.flover.hellloworld.DisplayMessageActivity"> 

    <TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"/> 

</RelativeLayout> 
Смежные вопросы