2017-05-27 6 views
1

Ich versuche, eine TextView in einem Fragment innerhalb eines Layouts mit Registerkarten in meiner Android-Anwendung zu füllen. Ich habe mir 2 otherthreads angesehen, aber der Text aus der Datei erscheint nicht auf dem Bildschirm, sobald die Anwendung im angegebenen Bereich ausgeführt wird.Android - Popup textView in Fragment aus Textdatei in res/rohe

Was denkst du, dass ich hier vermisse? Dank

Fragment

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

Hauptaktivität

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); 
    } 
} 

Tab XML (Das Gleiche gilt für alle Registerkarten)

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

Antwort

1

Sie falsche if haben, textview wll immer null sein und if nicht so

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

oder textView und text beide unterschiedlich sind, so verwenden die Sie initialisieren 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

Ah mein Fehler, danke Pavneet :) – MBR

0

bereits auf null ausgeführt werden

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

Wenn das textView initialisiert wird, um n zu sein ull, wie wird das nachfolgende if() ausgeführt?

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

Ändern Sie dies, wenn das nicht notwendig ist.

Verwandte Themen