2012-11-20 91 views
2

我得到NullPointerExceptiontv.setMovementMethod(new ScrollingMovementMethod());但我完全不知道爲什麼!我已經在XML文件中聲明瞭textView並在onCreateView中初始化它。任何幫助,將不勝感激。NullPointerException使用帶有textview的片段

下面是Java代碼的相關章節:

public class TestConnection extends Fragment { 
    public TestConnection() { 

    } 


    JSONParser jParser = new JSONParser(); 

    //button pressed to get the items 
    Button getAllItems; 

    //declare list view 
    TextView tv; 

    //Progress dialog 
    private ProgressDialog pDialog; 

    //Make an arrayList containing all items 
    ArrayList<HashMap<String, String>> itemsList; 

    //url to get items 
    private static String urlAllItems = "http://jamesalfei.netne.net/php/get_all_items.php"; 

    //JSON node/tag names 
    private static final String TAG_SUCCESS = "success"; 
    private static final String TAG_ITEMS = "items"; 
    private static final String TAG_PID = "pid"; 
    private static final String TAG_NAME = "name"; 

    //items array 
    JSONArray items = null; 

    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.sql_layout, 
       container, false); 
     getAllItems = (Button) getActivity().findViewById(R.id.SQLGetItems); 

     //listview 
     tv = (TextView) getActivity().findViewById(R.id.sqltv); 

     tv.setMovementMethod(new ScrollingMovementMethod()); 

     getAllItems.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       // Launching All products Activity 
       retreiveProducts(); 
      } 
     }); 
     return view; 
    } 

這裏是XML

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

     <Button 
      android:id="@+id/SQLGetItems" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentLeft="true" 
      android:layout_alignParentRight="true" 
      android:layout_alignParentTop="true" 
      android:text="@string/getSQL" /> 

     <TextView 
      android:id="@+id/sqltv" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentBottom="true" 
      android:layout_alignParentLeft="true" 
      android:layout_alignParentRight="true" 
      android:layout_below="@+id/SQLGetItems" 
      android:text="@string/sqlLabel" /> 

    </RelativeLayout> 

道歉,如果我用什麼不好的編碼習慣,但我很新android編程!

+2

安置自己的logcat的錯誤。 – Sam

回答

5

您正在尋找在錯誤視圖中的TextView。您應該搜索充氣的視圖,而不是父母的視圖,主要是因爲您沒有在onCreateView()中添加該視圖。所以更換:

tv = (TextView) getActivity().findViewById(R.id.sqltv); 

與此

tv = (TextView) view.findViewById(R.id.sqltv); 
+1

打敗我吧。願分數是你的;) –

+0

非常感謝你!我將它改爲「查看」。對於textView和Button,它現在工作的很棒!謝謝! 但是,現在我有SQL連接錯誤...返回工作! – James

+0

任何想法如何解決我的? http://stackoverflow.com/questions/39907625/why-is-accessing-textview-of-a-fragment-inside-activity-throwing-an-error – Si8

3

視圖不附加任何東西,因爲您使用false作爲inflate()中的第三個參數。因此,您需要將findViewById()範圍限定爲具有TextView的佈局。使用:

tv = (TextView) view.findViewById(R.id.sqltv); 
相關問題