我有下面的XML佈局文件片段片段返回null
public class competitionFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
View view = inflater.inflate(R.layout.competition_details_fragment,
container, false);
return view;
}
public void setText(String item) {
TextView view = (TextView) getView().findViewById(R.id.detailsText);
view.setText(item);
}
:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/detailsText"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="center_horizontal|center_vertical"
android:layout_marginTop="20dip"
android:text="Default Text"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textSize="30dp" />
</LinearLayout>
這個片段被放在我的活動誰擁有此佈局如下:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/background"
tools:context=".SearchCompetetionsActivity" >
<ListView
android:id="@+id/android:list"
android:layout_width="100dp"
android:layout_height="504dp"
android:layout_alignLeft="@+id/searchView1"
android:layout_alignParentBottom="true"
android:layout_alignRight="@+id/searchView1"
android:layout_below="@+id/searchView1" >
</ListView>
<EditText
android:id="@+id/searchView1"
android:layout_width="500dp"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="72dp"
android:layout_marginTop="53dp"
android:background="@android:color/background_light"
android:ems="10"
android:hint="@string/search"
android:inputType="text" >
<requestFocus />
</EditText>
<fragment
android:id="@+id/competitionDetails"
android:layout_width="500dp"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignTop="@+id/searchView1"
android:layout_marginLeft="101dp"
android:layout_toRightOf="@+id/android:list"
class="com.example.konkurrencesigner.competitionFragment" />
在我的活動(存有片段)我有當列表項被選中下面的代碼:
public void onListItemClick(ListView parent, View v, int position, long id){
competitionFragment fragment = (competitionFragment) getFragmentManager().findFragmentById(R.layout.competition_details_fragment);
Toast.makeText(this,
""+fragment.isAdded(),
Toast.LENGTH_SHORT).show();
}
當我運行我的應用程序可以看到的TextView的默認文本然而,當我選擇一個項目我在這裏得到一個空指針豁免:competitionFragment fragment = (competitionFragment) getFragmentManager().findFragmentById(R.layout.competition_details_fragment);
任何人都可以告訴我爲什麼會發生這種情況?
林不知道,但當你infalte它可能會失去與佈局ID conexion。嘗試在充氣後手動將該ID放入片段中。 – 2013-04-27 15:19:21