Android OnCheckBox在片段中单击
我已经处理这个错误很多小时了。令人沮丧的是,代码没有任何错误,但当我试图启动应用程序时,它不起作用。当我删除正在处理的代码时,应用程序运行得非常完美 代码中有什么遗漏吗?我有没有不必要的代码 我非常感谢你的帮助 这是我的代码:Android OnCheckBox在片段中单击,android,checkbox,onclick,fragment,Android,Checkbox,Onclick,Fragment,我已经处理这个错误很多小时了。令人沮丧的是,代码没有任何错误,但当我试图启动应用程序时,它不起作用。当我删除正在处理的代码时,应用程序运行得非常完美 代码中有什么遗漏吗?我有没有不必要的代码 我非常感谢你的帮助 这是我的代码: import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import a
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.ImageView;
public class FörstängningFragment extends Fragment {
int checkOne = '0';
int checkTwo = '0';
int checkThree = '0';
ImageView bild = (ImageView)
getView().findViewById(R.id.forstangningimage);
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_forstangning, container, false);
bild = (ImageView) rootView.findViewById(R.id.forstangningimage);
bild.setImageResource(R.drawable.forstangning);
CheckBox c = (CheckBox) rootView.findViewById(R.id.checkboxbak);
CheckBox c2 = (CheckBox) rootView.findViewById(R.id.checkBox2);
CheckBox c3 = (CheckBox) rootView.findViewById(R.id.checkBox3);
bild = (ImageView) rootView.findViewById(R.id.forstangningimage);
c.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
checkOne = '1';
bild.setImageResource(R.drawable.ic_launcher);
} else {
checkOne = '0';
bild.setImageResource(R.drawable.forstangning);
}
}
});
c2.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
checkTwo = '1';
bild.setImageResource(R.drawable.ic_launcher);
} else {
checkTwo = '0';
bild.setImageResource(R.drawable.forstangning);
}
}
});
c3.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
checkThree = '1';
bild.setImageResource(R.drawable.ic_launcher);
} else {
checkThree = '0';
bild.setImageResource(R.drawable.forstangning);
}
}
});
return rootView;
}
}
我的日志说:
01-21 20:56:31.869 1349-1349/hej.swipeview E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.NullPointerException
at hej.swipeview.FörstängningFragment.<init>(FörstängningFragment.java:20)
at hej.swipeview.FragmentPageAdapter.getItem(FragmentPageAdapter.java:25)
at android.support.v4.app.FragmentPagerAdapter.instantiateItem(FragmentPagerAdapter.java:97)
at android.support.v4.view.ViewPager.addNewItem(ViewPager.java:837)
at android.support.v4.view.ViewPager.populate(ViewPager.java:1053)
at android.support.v4.view.ViewPager.populate(ViewPager.java:919)
at android.support.v4.view.ViewPager$3.run(ViewPager.java:249)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)
at android.view.Choreographer.doCallbacks(Choreographer.java:562)
at android.view.Choreographer.doFrame(Choreographer.java:531)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)
at android.os.Handler.handleCallback(Handler.java:730)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
01-21 20:56:31.869 1349-1349/hej.swipeview E/AndroidRuntime﹕ 致命异常:主
java.lang.NullPointerException
在hej.swipeview.FörstängningFragment.(FörstängningFragment.java:20)
位于hej.swipeview.FragmentPageAdapter.getItem(FragmentPageAdapter.java:25)
位于android.support.v4.app.FragmentPagerAdapter.InstanceItem(FragmentPagerAdapter.java:97)
位于android.support.v4.view.ViewPager.addNewItem(ViewPager.java:837)
位于android.support.v4.view.ViewPager.populate(ViewPager.java:1053)
在android.support.v4.view.ViewPager.populate上(ViewPager.java:919)
在android.support.v4.view.ViewPager$3.run(ViewPager.java:249)
在android.view.Choreographer$CallbackRecord.run(Choreographer.java:749)
位于android.view.Choreographer.doCallbacks(Choreographer.java:562)
位于android.view.Choreographer.doFrame(Choreographer.java:531)
在android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735)中
位于android.os.Handler.handleCallback(Handler.java:730)
位于android.os.Handler.dispatchMessage(Handler.java:92)
位于android.os.Looper.loop(Looper.java:137)
位于android.app.ActivityThread.main(ActivityThread.java:5103)
位于java.lang.reflect.Method.Invokenactive(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:525)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run上(ZygoteInit.java:737)
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
在dalvik.system.NativeStart.main(本机方法)
在调用onCreateView
后(而不是在创建java对象时)找到用于TangNingImage视图的
另外,不要使用视图。OnClickListener
,而是迁移到使用更适合您需要的
作为继承人,一个
然后重复c2
和c3
显示您的日志…我更新了我的答案,这样片段就不会试图找到TangNingImage
视图的,直到调用onCreateView
之后,代码仍然是绿色的,但启动器没有按照我的要求执行操作。我已经更新了我的代码,这样你就可以看到它现在的样子。也许我必须在我的ActivitySwipe或FragmentPageAdapter中添加一些东西,才能让我的片段中的代码正常工作?我已经更新了我的日志。不,在我看来这是同样的问题。就像以前一样。
public class FörstängningFragment extends Fragment {
int checkOne = '0';
int checkTwo = '0';
int checkThree = '0';
ImageView bild;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_forstangning, container, false);
bild = (ImageView) rootView.findViewById(R.id.forstangningimage);
bild.setImageResource(R.drawable.forstangning);
CheckBox c = (CheckBox) rootView.findViewById(R.id.checkboxbak);
CheckBox c2 = (CheckBox) rootView.findViewById(R.id.checkBox2);
CheckBox c3 = (CheckBox) rootView.findViewById(R.id.checkBox3);
bild = (ImageView) rootView.findViewById(R.id.forstangningimage);
CheckBox c = (CheckBox) rootView.findViewById(R.id.checkboxbak);
....
c.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
// The toggle is enabled
} else {
// The toggle is disabled
}
}
});