下面的代码显示了添加片段的活动的一部分。
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.fragment_container, srkt_frag);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft.commit();
TabSpec specs1=mTab.newTabSpec("tag1");
specs1.setContent(R.id.fragment_container);
specs1.setIndicator("SRK/T");
mTab.addTab(specs1);
mTab是TabHost,其中srkt_frag显示为内容。 片段类如下所示
public class Srkt_x extends Fragment
{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
View view=inflater.inflate(R.layout.activity_srkt_x,container,false);
TextView text = (TextView) getView().findViewById(R.id.srkt_power);
Float result=getArguments().getFloat("RESULT");
text.setText(String.valueOf(result));
return view;
}
}
执行项目后,我在第21行得到nullpointerexception,即
TextView text = (TextView) getView().findViewById(R.id.srkt_power);
我的xml文件如下所示
<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"
tools:context=".Srkt_x" >
<ScrollView
android:id="@+id/srkt_scrollView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:background="@color/Black" >
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="433dp" >
<TextView
android:id="@+id/srkt_power"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/iolpower"
android:layout_toRightOf="@+id/iolpower"
android:clickable="false"
android:ems="10"
android:enabled="false"
android:fadingEdge="horizontal"
android:focusable="false"
android:focusableInTouchMode="false"
android:gravity="center|left"
android:longClickable="false"
android:paddingTop="10dp"
android:textColor="@color/DeepSkyBlue"
android:textSize="15sp" />
<TextView
android:id="@+id/iolpower"
android:layout_width="100dp"
android:layout_height="30dp"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="16dp"
android:layout_marginTop="20dp"
android:gravity="bottom|center"
android:textColor="@color/White"
android:inputType="text"
android:text="@string/power"
android:textSize="20sp"
android:visibility="visible" />
<TableLayout
android:layout_width="228dp"
android:layout_height="match_parent"
android:layout_below="@+id/srkt_power"
android:layout_centerHorizontal="true"
android:layout_marginTop="33dp"
android:paddingTop="10dp" >
<TableRow
android:id="@+id/srkttableRow1"
android:layout_height="wrap_content"
android:background="@color/SkyBlue"
android:orientation="vertical"
android:showDividers="middle" >
<TextView
android:id="@+id/iolCol"
android:layout_height="wrap_content"
android:layout_gravity="left"
android:layout_weight="1"
android:background="@color/SkyBlue"
android:gravity="center"
android:text="@string/iol"
android:textColor="@color/White"
android:textSize="20sp" />
<TextView
android:id="@+id/refCol"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:layout_weight="1"
android:background="@color/SkyBlue"
android:gravity="center"
android:text="@string/refr"
android:textColor="@color/White"
android:textSize="20sp" />
</TableRow>
<TableRow
android:id="@+id/srkttableRow2"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@color/Black" >
<TextView
android:id="@+id/srktrnd2"
android:layout_gravity="left|center"
android:layout_weight="1"
android:gravity="center"
android:textColor="@color/White"
android:textSize="15sp" />
<TextView
android:id="@+id/srktref2"
android:layout_gravity="right|center"
android:layout_weight="1"
android:gravity="center"
android:textColor="@color/White"
android:textSize="15sp" />
</TableRow>
<TableRow
android:id="@+id/srkttableRow3"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@color/Black" >
<TextView
android:id="@+id/srktrnd3"
android:layout_gravity="left|center"
android:layout_weight="1"
android:gravity="center"
android:textColor="@color/White"
android:textSize="15sp" />
<TextView
android:id="@+id/srktref3"
android:layout_gravity="right|center"
android:layout_weight="1"
android:gravity="center"
android:textColor="@color/White"
android:textSize="15sp" />
</TableRow>
<TableRow
android:id="@+id/srkttableRow4"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@color/Black" >
<TextView
android:id="@+id/srktrnd4"
android:layout_gravity="left|center"
android:layout_weight="1"
android:gravity="center"
android:textColor="@color/White"
android:textSize="15sp" />
<TextView
android:id="@+id/srktref4"
android:layout_gravity="right|center"
android:layout_weight="1"
android:gravity="center"
android:textColor="@color/White"
android:textSize="15sp" />
</TableRow>
<TableRow
android:id="@+id/srkttableRow5"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@color/Black" >
<TextView
android:id="@+id/srktrnd5"
android:layout_gravity="left|center"
android:layout_weight="1"
android:gravity="center"
android:textColor="@color/White"
android:textSize="15sp" />
<TextView
android:id="@+id/srktref5"
android:layout_gravity="right|center"
android:layout_weight="1"
android:gravity="center"
android:textColor="@color/White"
android:textSize="15sp" />
</TableRow>
<TableRow
android:id="@+id/srkttableRow6"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@color/Black" >
<TextView
android:id="@+id/srktrnd6"
android:layout_gravity="left|center"
android:layout_weight="1"
android:gravity="center"
android:textColor="@color/White"
android:textSize="15sp" />
<TextView
android:id="@+id/srktref6"
android:layout_gravity="right|center"
android:layout_weight="1"
android:gravity="center"
android:textColor="@color/White"
android:textSize="15sp" />
</TableRow>
<TableRow
android:id="@+id/srkttableRow7"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@color/Black" >
<TextView
android:id="@+id/srktrnd7"
android:layout_gravity="left|center"
android:layout_weight="1"
android:background="@color/DeepSkyBlue"
android:gravity="center"
android:textColor="@color/White"
android:textSize="15sp" />
<TextView
android:id="@+id/srktref7"
android:layout_gravity="right|center"
android:layout_weight="1"
android:background="@color/DeepSkyBlue"
android:gravity="center"
android:textColor="@color/White"
android:textSize="15sp" />
</TableRow>
<TableRow
android:id="@+id/srkttableRow8"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@color/Black" >
<TextView
android:id="@+id/srktrnd8"
android:layout_gravity="left|center"
android:layout_weight="1"
android:gravity="center"
android:textColor="@color/White"
android:textSize="15sp" />
<TextView
android:id="@+id/srktref8"
android:layout_gravity="right|center"
android:layout_weight="1"
android:gravity="center"
android:textColor="@color/White"
android:textSize="15sp" />
</TableRow>
<TableRow
android:id="@+id/srkttableRow9"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@color/Black" >
<TextView
android:id="@+id/srktrnd9"
android:layout_gravity="left|center"
android:layout_weight="1"
android:gravity="center"
android:textColor="@color/White"
android:textSize="15sp" />
<TextView
android:id="@+id/srktref9"
android:layout_gravity="right|center"
android:layout_weight="1"
android:gravity="center"
android:textColor="@color/White"
android:textSize="15sp" />
</TableRow>
<TableRow
android:id="@+id/srkttableRow10"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@color/Black" >
<TextView
android:id="@+id/srktrnd10"
android:layout_gravity="left|center"
android:layout_weight="1"
android:gravity="center"
android:textColor="@color/White"
android:textSize="15sp" />
<TextView
android:id="@+id/srktref10"
android:layout_gravity="right|center"
android:layout_weight="1"
android:gravity="center"
android:textColor="@color/White"
android:textSize="15sp" />
</TableRow>
<TableRow
android:id="@+id/srkttableRow11"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@color/Black" >
<TextView
android:id="@+id/srktrnd11"
android:layout_gravity="left|center"
android:layout_weight="1"
android:gravity="center"
android:textColor="@color/White"
android:textSize="15sp" />
<TextView
android:id="@+id/srktref11"
android:layout_gravity="right|center"
android:layout_weight="1"
android:gravity="center"
android:textColor="@color/White"
android:textSize="15sp" />
</TableRow>
<TableRow
android:id="@+id/srkttableRow12"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@color/Black" >
<TextView
android:id="@+id/srktrnd12"
android:layout_gravity="left|center"
android:layout_weight="1"
android:gravity="center"
android:textColor="@color/White"
android:textSize="15sp" />
<TextView
android:id="@+id/srktref12"
android:layout_gravity="right|center"
android:layout_weight="1"
android:gravity="center"
android:textColor="@color/White"
android:textSize="15sp" />
</TableRow>
</TableLayout>
</RelativeLayout>
</ScrollView>
日志文件如下所示
03-26 23:49:22.333: D/AndroidRuntime(497): Shutting down VM
03-26 23:49:22.333: W/dalvikvm(497): threadid=1: thread exiting with uncaught exception (group=0x40015560)
03-26 23:49:22.353: E/AndroidRuntime(497): FATAL EXCEPTION: main
03-26 23:49:22.353: E/AndroidRuntime(497): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.iolcalci/com.example.iolcalci.Menu}: java.lang.NullPointerException
03-26 23:49:22.353: E/AndroidRuntime(497): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
03-26 23:49:22.353: E/AndroidRuntime(497): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
03-26 23:49:22.353: E/AndroidRuntime(497): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
03-26 23:49:22.353: E/AndroidRuntime(497): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
03-26 23:49:22.353: E/AndroidRuntime(497): at android.os.Handler.dispatchMessage(Handler.java:99)
03-26 23:49:22.353: E/AndroidRuntime(497): at android.os.Looper.loop(Looper.java:123)
03-26 23:49:22.353: E/AndroidRuntime(497): at android.app.ActivityThread.main(ActivityThread.java:3683)
03-26 23:49:22.353: E/AndroidRuntime(497): at java.lang.reflect.Method.invokeNative(Native Method)
03-26 23:49:22.353: E/AndroidRuntime(497): at java.lang.reflect.Method.invoke(Method.java:507)
03-26 23:49:22.353: E/AndroidRuntime(497): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
03-26 23:49:22.353: E/AndroidRuntime(497): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
03-26 23:49:22.353: E/AndroidRuntime(497): at dalvik.system.NativeStart.main(Native Method)
03-26 23:49:22.353: E/AndroidRuntime(497): Caused by: java.lang.NullPointerException
03-26 23:49:22.353: E/AndroidRuntime(497): at com.example.iolcalci.Srkt_x.onCreateView(Srkt_x.java:21)
03-26 23:49:22.353: E/AndroidRuntime(497): at android.support.v4.app.Fragment.performCreateView(Fragment.java:1460)
03-26 23:49:22.353: E/AndroidRuntime(497): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:911)
03-26 23:49:22.353: E/AndroidRuntime(497): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1088)
03-26 23:49:22.353: E/AndroidRuntime(497): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682)
03-26 23:49:22.353: E/AndroidRuntime(497): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1444)
03-26 23:49:22.353: E/AndroidRuntime(497): at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:551)
03-26 23:49:22.353: E/AndroidRuntime(497): at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1129)
03-26 23:49:22.353: E/AndroidRuntime(497): at android.app.Activity.performStart(Activity.java:3791)
03-26 23:49:22.353: E/AndroidRuntime(497): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1620)
03-26 23:49:22.353: E/AndroidRuntime(497): ... 11 more
我无法弄清楚问题。有什么解决方案吗?
编辑: 第22行:Float结果= getArguments()。getFloat(“RESULT”);
编辑2:设置参数如下所示:
IOLPower_srkt=Srkt();
Bundle srkt_bundle=new Bundle();
srkt_bundle.putFloat("RESULT", IOLPower_srkt);
srkt_frag.setArguments(srkt_bundle);
这里Srkt()返回浮点值 检查详细代码
IOLPower_srkt=Srkt();
Bundle srkt_bundle=new Bundle();
srkt_bundle.putFloat("RESULT", IOLPower_srkt);
srkt_frag.setArguments(srkt_bundle);
IOLPower_bink=Binkhorst();
Bundle bink_bundle=new Bundle();
bink_bundle.putFloat("RESULT", IOLPower_bink);
bink_frag.setArguments(bink_bundle);
IOLPower_srk2=Srk2();
if((Math.ceil(IOLPower_srk2)-IOLPower_srk2)>0.5){
srk2_rnd=(float) Math.floor(IOLPower_srk2);
}else{
srk2_rnd=(float) Math.ceil(IOLPower_srk2);
}
Bundle srk2_bundle=new Bundle();
srk2_bundle.putFloat("RESULT", srk2_rnd);
srk2_frag.setArguments(srk2_bundle);
IOLPower_holl=Holladay();
Bundle holl_bundle=new Bundle();
holl_bundle.putFloat("RESULT", IOLPower_holl);
holl_frag.setArguments(holl_bundle);
}
});
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
ft.replace(R.id.fragment_container, srkt_frag);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft.commit();
TabSpec specs1=mTab.newTabSpec("tag1");
specs1.setContent(R.id.fragment_container);
specs1.setIndicator("SRK/T");
mTab.addTab(specs1);
TabSpec specs2=mTab.newTabSpec("tag2");
specs2.setContent(R.id.fragment_container);
specs2.setIndicator("SRK II");
mTab.addTab(specs2);
TabSpec specs3=mTab.newTabSpec("tag3");
specs3.setContent(R.id.fragment_container);
specs3.setIndicator("HOLLADAY");
mTab.addTab(specs3);
TabSpec specs4=mTab.newTabSpec("tag4");
specs4.setContent(R.id.fragment_container);
specs4.setIndicator("BINKHORST");
mTab.addTab(specs4);
答案 0 :(得分:12)
如何解决:日志的线索是Caused by: java.lang.NullPointerException
at com.example.iolcalci.Srkt_x.onCreateView(Srkt_x.java:21)
表示在Null Pointer Exception
处有一个Srkt_x.java line 21
所以请转到第21行,看看哪个值等于null
并抛出异常。
您的代码存在问题,TextView text = (TextView) getView().findViewById(R.id.srkt_power);
其中getView()
为null
,因为尚未创建。
正确的代码是:
public class Srkt_x extends Fragment
{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.activity_srkt_x,container,false);
// use view instead of getView()
TextView text = (TextView) view.findViewById(R.id.srkt_power);
if(getArguments() != null) {
Float result=getArguments().getFloat("RESULT");
text.setText(String.valueOf(result));
} else {
text.setText("result not included");
}
return view;
}
}
你必须使用膨胀的视图才能通过id获得想要的TextView。
执行onCreateView
后return view;
结束时,getView()
将返回view
值,而不是null
。
根据Fragment的Android文档页面中的建议,请参阅TitlesFragment
和DetailsFragment
,使用类似下面的代码来设置参数
public static Srkt_x newInstance(Float result) {
Srkt_x f = new Srkt_x ();
// Supply index input as an argument.
Bundle args = new Bundle();
args.putFloat("RESULT", result);
f.setArguments(args);
return f;
}
答案 1 :(得分:5)
而不是getView()
使用您刚刚膨胀的视图,因为视图尚未返回,您将获得NPE
也许是这样的:
View view=inflater.inflate(R.layout.activity_srkt_x,container,false);
TextView text = (TextView) view.findViewById(R.id.srkt_power);
//*** do something***
return view;
答案 2 :(得分:3)
替换
TextView text = (TextView) getView().findViewById(R.id.srkt_power);
带
TextView text = (TextView) getActivity().findViewById(R.id.srkt_power);
答案 3 :(得分:1)
您的错误和混淆的原因是由于不理解how the Android event loop works.
当片段还没有片段时,您正在调用getView()
。该片段仅在onCreateView
完成运行后才有视图。 onCreateView
的要点是“让片段实例化其用户界面视图”。
你应该getActivity().findViewById
。
答案 4 :(得分:0)
尝试在您应该覆盖的方法onViewCreated()
中执行您需要执行的操作。别忘了给它打电话super()
。