2017-03-18 12 views
0

私はこの問題を抱えています。私のフラグメントのOnCreateViewは、ユーザーがデバイスを回転させて2番目の呼び出しですべての値を変更したときに2回呼び出されます。前のフラグメントのsaveInstanceStateがnullの場合ここOnCreateView二度目に呼ばれたフラグメント

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 



    // Inflate the layout for this fragment 
    view =inflater.inflate(R.layout.fragment_datos_reborn, container, false); 
    setRetainInstance(true); 
    //declaracion de fragment de resultados 

    if (getFragmentManager().findFragmentByTag("resultados_fragment")==null){ 
     resultadosFragment=new ResultadosFragment(); 
    } 
    view.findViewById(R.id.aceptarDatos).setOnClickListener(this); 
    //Asignaciones de RadioGroup del tipo de regresión 
     mRGTipoDeRegresion=(RadioGroup)view.findViewById(R.id.rGTipoDeRegresion); 

     rBTipoLineal=(RadioButton)view.findViewById(R.id.rBLineal); 
     rBTipoLineal.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       tipoDeRegresion="lineal"; 
      } 
     }); 
     rBTipoPotencial=(RadioButton)view.findViewById(R.id.rBPotecial); 
     rBTipoPotencial.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       tipoDeRegresion="potencial"; 
      } 
     }); 
    //Se pregunta si es tablet 
    esTablet=getResources().getBoolean(R.bool.es_tablet); 

    //obtener recycler 
    recycler = (RecyclerView)view.findViewById(R.id.recyclerDatos); 
    recycler.setHasFixedSize(true); 

    mBundle=this.getArguments(); 


    //  if (savedInstanceState==null){ 
    if (savedInstanceState==null){ 
     ejecutadoDesdePul=mBundle.getInt("ejecutado_desde_pulsasion"); 
    }else { 
     ejecutadoDesdePul=0; 
    } 


    //  if (ejecutadoDesdePul==1){ 
    if (savedInstanceState==null){ 
     elementoFuePulsado=mBundle.getBoolean("elemento_pulsado"); 
     botonAceptarFuePulsado=mBundle.getBoolean("botonAceptarPulsado"); 
    }else { 
     elementoFuePulsado=false; 
     botonAceptarFuePulsado=false; 
    } 
    if(elementoFuePulsado==true){ 
     numeroDeVariables=0; 
     variablesX=Funciones.convertirADoubleArrayComplejo(mBundle.getDoubleArray("valoresX")); 
     variablesY=Funciones.convertirADoubleArrayComplejo(mBundle.getDoubleArray("valoresY")); 
     elementoFuePulsado=false; 
    }else if(botonAceptarFuePulsado==true) { 
     numeroDeVariables=mBundle.getInt("numero_de_variables"); 
     botonAceptarFuePulsado=false; 
     if (savedInstanceState==null){ 
      if (giroPantalla!=true) { 
       variablesX = new Double[numeroDeVariables]; 
       variablesY = new Double[numeroDeVariables]; 
       giroPantalla=false; 
      } 
     } 
    } 
    tipoDeRegresion=mBundle.getString("tipo_de_regresion",""); 

    etiquetaX=mBundle.getString("nombre_x"); 
    etiquetaY=mBundle.getString("nombre_y"); 



    if (savedInstanceState==null) { 
     poblarLista(); 
    } 


    if (savedInstanceState==null){ 
     if (tipoDeRegresion.equals("lineal")){ 
      mRGTipoDeRegresion.check(R.id.rBLineal); 
      Funciones.hacerToastCorto(getActivity(),"Entra"); 
     }else if (tipoDeRegresion.equals("potencial")){ 
      mRGTipoDeRegresion.check(R.id.rBPotecial); 
      Funciones.hacerToastCorto(getActivity(),"Entra"); 
     } 
     pasarAResultados(); 
    } 
    if (ejecutadoDesdePul>=1){ 
     ejecutadoDesdePul++; 
    } 

    return view; 
} 

以下API 12とについて断片 https://paste.ofcode.org/XUXJn98nDXmVvQYnUGQDRF

+0

フラグメントのonCreateViewが2回呼び出されたことをどのように実際に知っていますか?そしてフラグメントの完全なコードを投稿できますか? –

+0

@IulianPopescu私は私のアプリをデバッグし、私はブレークポイントを使用しているので、私はそれを知っています。 –

+0

そしてこの断片の名前は何ですか? –

答えて

1

の完全なコードである:API 13以上の場合

android:configChanges="orientation" 

を追加:に

android:configChanges="orientation|screenSize" 

を追加マニフェストにあなたの断片があるあなたの活動

source

+0

ありがとう、しかし、私はこれを追加するコンテンツのレイアウトは、ポートレートと風景の同じであり、私はこれをしたくないです。 –

+0

@ LEAJIM_454このようにして画面を回転させると、(フラグメントを含む)アクティビティは破壊されませんが、どこに問題がありますか?私はこのコメントであなたを理解していませんでした – Curio

関連する問題