2014-06-18 30 views
-3

我在下面有一些代碼,當頁面加載時會將文本'test'添加到文本框中,但由於某種原因它會拋出一個空指針;好像在說它找不到控件,或者它指向不正確的文件?在代碼android中分配文本時拋出空指針?

的Java:

package com.example.application; 

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

import android.support.v7.app.ActionBarActivity; 
import android.support.v7.app.ActionBar; 
import android.support.v4.app.Fragment; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.LayoutInflater; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.TextView; 
import android.widget.Toast; 
import android.os.Build; 

public class ShowTeamsChosen extends ActionBarActivity { 

    //This is the textbox I am populating... 
    TextView txtOne = (TextView) findViewById(R.id.textView1); 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_show_teams_chosen); 
     //here I am setting the text 
     txtOne.setText("test"); 
     readFromFile(); 

     if (savedInstanceState == null) { 
      getSupportFragmentManager().beginTransaction() 
        .add(R.id.container, new PlaceholderFragment()).commit(); 
     } 
    } 

XML:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/container" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.example.application.ShowTeamsChosen" 
    tools:ignore="MergeRootFrame" > 

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

</FrameLayout> 
+0

您正在嘗試在設置託管內容之前查找視圖。 – adboco

+3

請閱讀活動生命週期以及如何設置視圖和一些基本的請。 –

回答

4
//This is the textbox I am populating... 
    TextView txtOne = (TextView) findViewById(R.id.textView1); 

移動內部的txtOneonCreate初始化,之後setContentView

+0

就是這樣,知道這將是一個簡單的解決方案。謝謝+1 :) – user3744373

2

你的代碼改成這樣:

public class ShowTeamsChosen extends ActionBarActivity { 

    //This is the textbox I am populating... 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_show_teams_chosen); 
     TextView txtOne = (TextView) findViewById(R.id.textView1); 
     //here I am setting the text 
     txtOne.setText("test"); 
     readFromFile(); 

     if (savedInstanceState == null) { 
      getSupportFragmentManager().beginTransaction() 
        .add(R.id.container, new PlaceholderFragment()).commit(); 
     } 
    } 
1

移動:

TextView txtOne = (TextView) findViewById(R.id.textView1); 

內部onCreate()

0

寫入的TextView txtOne =(TextView的)findViewById(R.id.textView1); setContentView(R.layout.activity_show_teams_chosen);