Delari Jesus
Delari Jesus

Reputation: 411

my robofragment not work to inject views (roboguice 2.0)

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

Answers (1)

nicopico
nicopico

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

Related Questions