Reputation: 411
I have a problem to inflate the views from my fragment roboguice and do not know why this happens ..
this is my code
first class
public class AppController extends RoboFragmentActivity {
@InjectView(R.id.rtlPrincipalPaginaPrincipal) RelativeLayout rtlPrincipal;
@InjectView(R.id.rtlPrincipalMenuQr) RelativeLayout rtlMenuQr;
@InjectView(R.id.rtlPrincipalPaginaTrasera) RelativeLayout rtlTraera;
private FragmentManager fragment_manager;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
objFragmenManager = AppController.this.getSupportFragmentManager();
setContentView(R.layout.activitylayout);
objAnimationbjar = AnimationUtils.loadAnimation(this, R.anim.linear);
objAnimationSubir = AnimationUtils.loadAnimation(this, R.anim.linear2);
final SharedPreferences prefs =
AppController.this.getSharedPreferences("MisPreferencias",Context.MODE_PRIVATE);
LlenarHandler();//para podr recibir llamadas de las otras clases
LlenarPaginaPrincipal();// pagina principal donde mostramos las poromociones
}
private void LlenarPaginaPrincipal(){
objNavegar = new Cnavegar();
Cnavegar objNavegar= new Cnavegar();
Fragment frmTopmen = new AfrmProciones();
objNavegar.RemplazarFragmento(R.id.rtlPrincipalPaginaTrasera,frmTopmen, "AfrmProciones",objFragmenManager);
}
now in fragment
public class AfrmProciones extends RoboFragment{
@InjectView(R.id.btnCity) Button btnBajar;
@InjectView(R.id.vfShow) ViewFlipper vfPromociones;
@InjectView(R.id.prgProgresoPomos) ProgressBar pgrProgreso;
@InjectView(R.id.Crono) Chronometer objCrono;
View vPromos;
private Handler mHandler;
private static final int SWIPE_MIN_DISTANCE = 120;
private static final int SWIPE_THRESHOLD_VELOCITY = 200;
ArrayList<Cpromocion> lstPromo;
@SuppressWarnings("deprecation")
private final GestureDetector detector = new GestureDetector(new MyGestureDetector());
AccesoBd objAcceso;
Promociones taspromociones;
ObjectAnimator objAnimFondo;
AlarmManager objAlarma;
BroadcastReceiver objBroadcast;
int itiempo;
public AfrmProciones(Handler rHandler){
mHandler = rHandler;
}
public AfrmProciones(){
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
RoboGuice.getInjector(getActivity()).injectMembers(this);
RegistrarEventos();
LlenarPromociones();
return vPromos;
}
private void RegistrarEventos(){
btnBajar.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
Message msg = new Message();
msg.setTarget(mHandler);
msg.obj = "TriggerMenu";
msg.sendToTarget();
}
});
vfPromociones.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(final View view, final MotionEvent event) {
detector.onTouchEvent(event);
return true;
}
});
objCrono.setOnChronometerTickListener(new OnChronometerTickListener() {
@Override
public void onChronometerTick(Chronometer chronometer) {
// TODO Auto-generated method stub
if (itiempo==2){
vfPromociones.showNext();
itiempo=0;
}else{
itiempo+=1;
}
}
});
}
this is my log
04-02 21:28:47.536: E/AndroidRuntime(17947): FATAL EXCEPTION: main
04-02 21:28:47.536: E/AndroidRuntime(17947): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.silice.qrstorecomerciales/com.silice.qrstore.AppController}: java.lang.NullPointerException
04-02 21:28:47.536: E/AndroidRuntime(17947): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2110)
04-02 21:28:47.536: E/AndroidRuntime(17947): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2135)
04-02 21:28:47.536: E/AndroidRuntime(17947): at android.app.ActivityThread.access$700(ActivityThread.java:140)
04-02 21:28:47.536: E/AndroidRuntime(17947): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1237)
04-02 21:28:47.536: E/AndroidRuntime(17947): at android.os.Handler.dispatchMessage(Handler.java:99)
04-02 21:28:47.536: E/AndroidRuntime(17947): at android.os.Looper.loop(Looper.java:137)
04-02 21:28:47.536: E/AndroidRuntime(17947): at android.app.ActivityThread.main(ActivityThread.java:4921)
04-02 21:28:47.536: E/AndroidRuntime(17947): at java.lang.reflect.Method.invokeNative(Native Method)
04-02 21:28:47.536: E/AndroidRuntime(17947): at java.lang.reflect.Method.invoke(Method.java:511)
04-02 21:28:47.536: E/AndroidRuntime(17947): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1027)
04-02 21:28:47.536: E/AndroidRuntime(17947): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)
04-02 21:28:47.536: E/AndroidRuntime(17947): at dalvik.system.NativeStart.main(Native Method)
04-02 21:28:47.536: E/AndroidRuntime(17947): Caused by: java.lang.NullPointerException
04-02 21:28:47.536: E/AndroidRuntime(17947): at com.jesus.PrincipalPromociones.AfrmProciones.RegistrarEventos(AfrmProciones.java:116)
04-02 21:28:47.536: E/AndroidRuntime(17947): at com.jesus.PrincipalPromociones.AfrmProciones.onCreateView(AfrmProciones.java:96)
04-02 21:28:47.536: E/AndroidRuntime(17947): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:871)
04-02 21:28:47.536: E/AndroidRuntime(17947): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1083)
04-02 21:28:47.536: E/AndroidRuntime(17947): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:635)
04-02 21:28:47.536: E/AndroidRuntime(17947): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1431)
04-02 21:28:47.536: E/AndroidRuntime(17947): at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:523)
04-02 21:28:47.536: E/AndroidRuntime(17947): at roboguice.activity.RoboFragmentActivity.onStart(RoboFragmentActivity.java:53)
04-02 21:28:47.536: E/AndroidRuntime(17947): at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1178)
04-02 21:28:47.536: E/AndroidRuntime(17947): at android.app.Activity.performStart(Activity.java:5216)
04-02 21:28:47.536: E/AndroidRuntime(17947): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2083)
04-02 21:28:47.536: E/AndroidRuntime(17947): ... 11 more
I've been looking for the cloud and I can not find anything relevant to this. the fact is that in the class that if they extend it injects robofragmentactivity correctly and once this has happened to robofragment stops working for me.
is due to this that I'm leaving behind settings?
thanks
Upvotes: 1
Views: 1659
Reputation: 3636
In RoboFragment, views are injected in the onViewCreated
method.
Your RegistrarEventos()
method is called before that, so you get a NullPointerException
when you try to reference the btnBajar
view.
Note: In Java, it is customary to name your method using a lowercase first-letter, and an uppercase first-letter for classes
Upvotes: 1