方法findViewById在fragment的活动中返回NULL

时间:2014-09-05 10:15:43

标签: android android-fragments findviewbyid

我想访问片段布局的TextView,但我总是收到null。我正在访问我的主要活动。 这是我的代码的一部分:

片段类:

public class Tab1 extends Fragment {

        private TextView titulo;

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

        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState)
        {

            return inflater.inflate(R.layout.tab1, container, false);
        }

    }

片段布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical"
android:padding="30dp"
android:baselineAligned="false"
android:background="@drawable/asteroide"
android:id="@+id/tab1">

<TextView
    android:id="@+id/titulo"
    style="@style/estiloAsteroides"
    android:gravity="center"
    android:text="@string/tituloAplicacion"
    android:textSize="25dp"
    android:layout_marginBottom="20dp"
    android:textColor="#fffcfffd"
    />
<Button
    android:id="@+id/Button01"
    style="@style/estiloAsteroides"
    android:text="@string/Arrancar"
    android:onClick="lanzarJuego"/>
<Button
    android:id="@+id/Button02"
    style="@style/estiloAsteroides"
    android:text="@string/Configurar"
    android:onClick="lanzarPreferencias"
    />
<Button
    android:id="@+id/Button03"
    style="@style/estiloAsteroides"
    android:text="@string/AcercaDe"
    android:onClick="lanzarAcercaDe"
    />
<Button
    style="@style/estiloAsteroides"
    android:id="@+id/Button04"
    android:text="Puntuaciones"
    android:onClick="lanzarPuntuaciones"
    />


</LinearLayout>

活动类:

package com.example.garciad_u2;

import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentTabHost;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.TextView;

public  class MainActivity extends FragmentActivity {
    private FragmentTabHost tabHost;
    public static AlmacenPuntuaciones almacen= new AlmacenPuntuacionesArray();

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);



        tabHost = (FragmentTabHost) findViewById(android.R.id.tabhost);
        tabHost.setup(this, getSupportFragmentManager(), android.R.id.tabcontent);

        tabHost.addTab(tabHost.newTabSpec("tab1").setIndicator("Lengueta 1"),
                Tab1.class, null);

        tabHost.addTab(tabHost.newTabSpec("tab2").setIndicator("Lengueta 2"),
                Tab2.class, null);


        TextView texto = (TextView) findViewById(R.id.titulo);
        texto.setText("TEST");

    }

    public void lanzarAcercaDe (View view)
    {
        Intent i = new Intent(this, AcercaDe.class);
        startActivity(i);
    }

    public void lanzarPreferencias (View view)
    {
        Intent i = new Intent(this, Preferencias.class);
        startActivity(i);
    }

    public void lanzarJuego (View view)
    {
        Intent i = new Intent(this, Juego.class);
        startActivity(i);
    }

    public void salir (View view)
    {
        finish();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu)
    {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }


    public void lanzarPuntuaciones(View view)
    {
        Intent i = new Intent(this, Puntuaciones.class);
        startActivity(i);
    }


    @Override
    public boolean onOptionsItemSelected(MenuItem item)
    {
        switch (item.getItemId())
        {
            case R.id.acercaDe:
                lanzarAcercaDe(null);
                break;
            case R.id.config:
                lanzarPreferencias(null);
                break;
        }
        return true;
    }
}

活动布局:

<android.support.v4.app.FragmentTabHost

    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/tabhost"
    android:layout_width="match_parent"
    android:layout_height="match_parent"

    >

   <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >

        <TabWidget
            android:id="@android:id/tabs"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_weight="0"
            android:orientation="horizontal" />

        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1" />

    </LinearLayout>

</android.support.v4.app.FragmentTabHost>

TextView&#34; texto&#34;永远是空的,我不明白为什么。 谢谢你的帮助。

最好的问候。

0 个答案:

没有答案