Я пытаюсь заполнить TextView во фрагмент в макете с вкладками в моем приложении для Android. Я взглянул на 2 другие темы но текст из файла не появляется на экране после запуска приложения в указанном пространстве.

Как вы думаете, я здесь скучаю? Спасибо

< Сильный > Фрагмент

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

public class Tab1_Fragment extends android.support.v4.app.Fragment {

    InputStream is;
    BufferedReader br;
    String entireFile;
    TextView text;
    View rootview;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
        rootview = inflater.inflate(R.layout.tab1_fragment,container,false);

        is = getResources().openRawResource(R.raw.test1);
        br = new BufferedReader(new InputStreamReader(is));
        String line;
        entireFile = "";
        try {
            while ((line = br.readLine()) != null) {
                entireFile = entireFile + (line + "\n");
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        TextView textView = null;
        if (textView != null) {
            text = (TextView) rootview.findViewById(R.id.textTab1);
            text.setText(entireFile);
        }

        return rootview;
    }
}

Основная деятельность

import android.os.Bundle;
import android.support.design.widget.TabLayout;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

    private static final String TAG = "Tab Main Screen";

    private SectionsPageAdapter mSectionsPageAdapter;

    private ViewPager mViewPager;

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

        mSectionsPageAdapter = new SectionsPageAdapter(getSupportFragmentManager());

        // Set up the ViewPager with the sections adapter.
        mViewPager = (ViewPager) findViewById(R.id.container);
        setupViewPager(mViewPager);

        TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
        tabLayout.setupWithViewPager(mViewPager);
    }

    private void setupViewPager(ViewPager viewPager) {
        SectionsPageAdapter adapter = new SectionsPageAdapter(getSupportFragmentManager());
        adapter.addFragment(new Tab1_Fragment(), "Tab1");
        adapter.addFragment(new Tab2_Fragment(), "Tab2");
        adapter.addFragment(new Tab3_Fragment(), "Tab3");
        adapter.addFragment(new Tab4_Fragment(), "Tab4");
        viewPager.setAdapter(adapter);
    }
}

XML вкладок (одинаково для всех вкладок)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:textSize="16sp"
        android:layout_marginTop="40dp"
        android:id="@+id/textTab1"/>

</RelativeLayout>
1
MBR 27 Май 2017 в 19:18

2 ответа

Лучший ответ

У вас неверный if, textview всегда будет нулевым и if не будет выполнен, поэтому

   if (textView == null) {
        text = (TextView) rootview.findViewById(R.id.textTab1);
        text.setText(entireFile);
    }

Или textView и text оба отличаются, поэтому используйте text

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
    rootview = inflater.inflate(R.layout.tab1_fragment,container,false);

    is = getResources().openRawResource(R.raw.test1);
    br = new BufferedReader(new InputStreamReader(is));
    String line;
    entireFile = "";
    try {
        while ((line = br.readLine()) != null) {
            entireFile = entireFile + (line + "\n");
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
    if(text==null){
        text = (TextView) rootview.findViewById(R.id.textTab1);
    }
    text.setText(entireFile);
    return rootview;
}
1
Pavneet_Singh 27 Май 2017 в 16:21

Вы уже инициализируете на ноль

    TextView textView = null;
    if (textView != null) {
        text = (TextView) rootview.findViewById(R.id.textTab1);
        text.setText(entireFile);
    }

Если textView инициализируется как null, как будет выполняться последующий if ()?

    text = (TextView) rootview.findViewById(R.id.textTab1);
    text.setText(entireFile);

Измените это, если не нужно.

0
Prudhvi Raj Kumar 27 Май 2017 в 16:29