2015-12-23 21 views
9

uczę Android z http://developer.android.com/index.html, ale kiedy sięgam http://developer.android.com/training/basics/firstapp/starting-activity.html Wyświetlanie sekcji wiadomości, punkt 6 mam błądandroid.support.v7.widget.AppCompatTextView nie mogą być oddane do android.widget.RelativeLayout

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

Zrobiłem wszystko krok po kroku, jak to było w samouczku. Dlaczego to nie działa?

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> 

Odpowiedz

11

Wszystko, co musisz zrobić, to Przypisywanie Id do względnych Układ powinien być jak

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

następnie po prostu zrobić lekką modyfikację swojej działalności

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

Dla mnie po prostu dodając androida : id do głównego kontenera układu naprawił mój problem. –

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

powodując problem.Because definiowania RelativeLayout z id TextView.

Przypisywanie

android:id="@+id/content" 

do RelativeLayout. Nie do TextView w XML

3

Zmień układ do tego, treść id powinna iść do RelativeLayout, a nie do 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> 
Powiązane problemy