2012-11-20 6 views
2

NullPointerExceptiontv.setMovementMethod(new ScrollingMovementMethod());에 가져 왔지만 그 이유를 알 수 없습니다! XML 파일에서 textView를 선언하고 onCreateView 내부에서 초기화했습니다. 어떤 도움을 주시면 감사하겠습니다. 여기 NullPointerException - 텍스트 뷰가있는 프래그먼트를 사용하여

는 자바 코드에 대한 관련 섹션 :

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> 

사과입니다,하지만 난에 아주 새로운 해요 안드로이드 프로그래밍!

+2

포스트와 로그 캣 오류. – 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

inflate()의 세 번째 매개 변수로 false을 사용했기 때문에보기에는 아무 것도 첨부되어 있지 않습니다. 따라서 TextView가있는 레이아웃에 findViewById()의 범위를 지정해야합니다. 사용 :

tv = (TextView) view.findViewById(R.id.sqltv); 
관련 문제