0

Fragmentを拡張するAndroidのクラスがあります。そして、ボタンを動的に作成する必要があります。new Button(this) が使えません。活動を広げていないからです。どうすればいいですか?

public class Tab2Fragment extends Fragment {

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


    LinearLayout theLayout =  (LinearLayout) inflater.inflate(R.layout.tab2, container, false);

    Context mFragmentContext=getActivity().getApplicationContext(); 
    Button btn=new Button(mFragmentContext);
    btn.setText("Hello Button");
    RelativeLayout.LayoutParams paramsd = new RelativeLayout.LayoutParams(150,30);
    paramsd.height = 600;
    paramsd.width = 60;
    btn.setLayoutParams(paramsd);
    addContentView(btn,paramsd); 
4

2 に答える 2

3

// 以下のコードを使用してみてください

ソル1:

Button myButt=new Button(YourFragmentClass.this);

ソル2:

Button myButt=new Button(getApplicationContext());

// このようにコンテキストを取得することもできます

 private Context mFragmentContext=getActivity().getApplicationContext(); 
于 2012-07-16T16:08:02.960 に答える
0
/* getActivity() will give you the Activity this fragment belongs
to, you can use this as 'Context' */

Button button = new Button(getActivity())

/* getView() will give you the root layout for this fragment 
(Relative, Linear or whatever you used in xml) and you must cast it
to a ViewGroup to access the getView() method*/

RelativeLayout.LayoutParams paramsd = new RelativeLayout.LayoutParams(150,30);
paramsd.height = 600;
paramsd.width = 60;

ViewGroup viewGroup = (ViewGroup) getView();
viewGroup.addView(button, paramsd);

getView() の詳細については、こちらを参照してください: ID なしのフラグメントへの Android の追加ボタン

ハッピーコーディング...

于 2014-03-28T13:49:53.683 に答える