2017-03-07 11 views
0

私はフラグメントからdialogfragmentにデータを送信するためにバンドルを使用している質問がありますが、フラグメントレイアウトのボタンをクリックしてデータを取得すると問題が発生します私のダイアログフラグメントが2回実行されていることがわかったので、なぜ私はnull値を取得するのか分かりませんでした。私の英語で申し訳ありませんが、この問題を解決するための提案は、私の質問を理解することができます。フラグメントからダイアログフラグメントに渡すときにAndroidが値nullを取得

これは私のダイアログフラグメント

Button[i].setBackgroundColor(0xFF00FF00); 
Button[i].setOnClickListener(new View.OnClickListener() { 
          @Override 
          public void onClick(View view) { 
           TextView test = (TextView)getView().findViewById(R.id.testproductname); 
           test.setText(pName); 
           String testproductname = test.getText().toString(); 

           Bundle args = new Bundle(); 
           args.putString("key", testproductname); 
           FragmentDialog newFragment = new FragmentDialog(); 
           newFragment.setArguments(args); 
           newFragment.show(getActivity().getSupportFragmentManager(), "TAG"); 

           showTheDialog(); 
        } 
      }); 
} 
protected void showTheDialog() { 
    FragmentManager fm = getActivity().getSupportFragmentManager(); 
    FragmentDialog overlay = new FragmentDialog(); 
    overlay.show(fm, "FragmentDialog"); 

} 

にデータを渡すために、私のonclickであるFragmentDialog

public class FragmentDialog extends DialogFragment { 

    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     Dialog dialog = super.onCreateDialog(savedInstanceState); 
     dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
     //dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.YELLOW)); 
     dialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT); 

     return dialog; 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle 
      savedInstanceState) { 
     View view = inflater.inflate(R.layout.prompt_quantity, container); 

     // tab slider 
     sectionsPagerAdapter = new SectionsPagerAdapter(getChildFragmentManager()); 

     // Set up the ViewPager with the sections adapter. 
     viewPager = (ViewPager) view.findViewById(R.id.modifierpager); 
     viewPager.setAdapter(sectionsPagerAdapter); 

     Bundle mArgs = getArguments(); 
     pName = mArgs.getString("key","asdasd"); 

     final TextView tpn = (TextView)getView().findViewById(R.id.gtestproductname); 
     tpn.setText(pName); 
} 
+1

'showTheDialog()'とは何ですか?それはあなたの前に 'newFragment.show'を呼んでいるようです... – marmor

+0

あなたの' showTheDialog() 'からダイアログフラグメントを呼び出す場合は、おかげで、私の質問を更新してください、showThDialog()は私のダイアログフラグメントをプロンプトするのに使用します –

+1

null値で再び表示され、前の行の 'newFragment.show(getActivity()。getSupportFragmentManager()、" TAG ")にダイアログを表示するように呼び出しています。 //ここでフラグメントを表示するために呼び出す ' と 'showTheDialog(); //フラグメントをもう一度表示していますか? – Sony

答えて

1
newFragment.show(getActivity().getSupportFragmentManager(), "TAG"); 

          showTheDialog(); 

あなたは二回のショーを呼び出す必要はありません、このロジックは、二度のビューを描画します。そういうわけで、あなたは異常を持っています。もう1つを削除します。

関連する問題