2013-07-31 1 views
-1

런타임시 조각에 텍스트 선택 텍스트를 구현하려고합니다.setSelected()에서 null 포인터 예외 가져 오기

문제 # 1 : 첫 번째 조각에서 tv.setSelected(true);에 널 포인터 예외가 발생합니다. 텍스트보기의 선택 윤곽 코드를 입력 할 때까지 모든 것이 제대로 작동합니다.

문제 2 :public void onItemClick의 목록보기에서 새 의도 대신 새 조각으로 이동할 수 있습니까?

public static class FragmentOne extends Fragment { 

ArrayList<String> ar; 
ArrayAdapter<String> ad ; 
ListView lv ; 
TextView  tv; 

public FragmentOne() { 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle   
     savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.one, container, false); 
      tv = (TextView) rootView.findViewById(R.id.textView1); 

     tv.setSelected(true); 
    ar = new ArrayList<String>(); 
    lv = (ListView) rootView.findViewById(R.id.listView1); 
    for (int i = 0 ; i< 10 ; i++){ 

     ar.add("My Item " + String.valueOf(i)); 

     } 
     ad = new ArrayAdapter<String> 
    (getActivity().getApplicationContext(), android.R.layout.simple_dropdown_item_1line, 
      ar); 

    lv.setAdapter(ad); 
    lv.setOnItemClickListener(new OnItemClickListener() { 
      public void onItemClick(AdapterView<?> parent, View view, 
        int position, long id) { 
          Toast t = Toast.makeText(getActivity(), "Message", 
           Toast.LENGTH_SHORT); 
          t.show(); 

         Intent i = new Intent(getActivity(), tst.class); 


         startActivity(i); 

      } 
     }); 


    return rootView; 
} 

}

이 XML 코드는 다음과 같습니다 :

이 내 코드 여기에 당신의 첫번째 문제를 응답

<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent"> 

<TextView 
    android:id="@+id/mywidget" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    android:layout_marginLeft="94dp" 
    android:layout_marginTop="145dp" 
    android:ellipsize="marquee" 
    android:fadingEdge="horizontal" 
    android:lines="2" 
    android:marqueeRepeatLimit="marquee_forever" 
    android:scrollHorizontally="true" 
    android:text="صور أندلسية ..... صفحة الأندلس ....معارك أندلسية ..... الأندلس في سطور  
    ..... الأندلس : " 
    android:textColor="#ff4500" 
    android:focusable="false" /> 

    </RelativeLayout> 
+2

게시물을 게시했기 때문에 logcat –

+0

@sunil이 필요하지 않습니다. "tv.setSelected (true);에 널 포인터 예외가 있습니다." –

+0

View를 올바르게 사용하지 않습니다. rootView = inflater.inflate (R.layout.one, container, false); tv = (TextView) rootView.findViewById (R.id.textView1); 그리고 그 이유 때문에 tv = (TextView) rootView.findViewById (R.id.textView1); 반환 null –

답변

1

- 난 강력하게이 개 별도의 질문을 게시 좋습니다. 당신의 TextViewnull입니다 후 ...

(확인하기 위해 로그 캣을 필요)

tv.setSelected(true); 

:

은 NPE는 던져됩니다.

차례로 xml에 해당 ID (또는 해당 유형)의 자녀가 발견되지 않았기 때문에 이 유효한 TextView을 반환하지 않았 음을 의미합니다.

R.layout.one xml에 textView1TextView 노드가 포함되어 있는지 확인하십시오. 레이아웃은 당신이 R.layout.one에 correponds을 게시하는 경우

편집

, 그것은 아주 사소한 다음 TextView의 ID가 mywidget있다.

변경해야합니다.

다른 레이아웃이 사용되지 않았는지 확인하십시오. 그렇지 않으면 레이아웃에서 ID를 변경하면 문제가 발생할 수 있습니다.

대신 Fragment에서 ID 참조를 변경하고 싶을 수 있습니다.

0

XML에 textView1이라는 ID를 가진 TextView가 없기 때문에 발생합니다.

편집

당신이 ID를 사용하여 XML에 ListView가 필요하면 당신은 또한 listView1

3

널 포인터 예외 보통은 를 초기화되지 않았을 때 발생, ListView에에 문제가있는 것 개체 또는 null로 초기화됩니다.