Java 如何在片段中膨胀视图?

Java 如何在片段中膨胀视图?,java,android,android-layout,android-fragments,Java,Android,Android Layout,Android Fragments,我试图在活动开始时将内容分配给片段中的微调器。我发现首先我需要膨胀片段,膨胀布局,然后膨胀视图,以便为其分配这段代码: spinner.setAdapter(adapter); 我在其他帖子上也看到过类似的问题,但我一点运气都没有。最终,我不会试图修复我的代码,而是找到一段允许我执行spinner.setAdapter(adapter)的代码;没有得到NullPointerException。此操作需要在活动开始时执行,因此基本上需要涉及onCreate()方法。做: Spinner sp

我试图在活动开始时将内容分配给片段中的微调器。我发现首先我需要膨胀片段,膨胀布局,然后膨胀视图,以便为其分配这段代码:

 spinner.setAdapter(adapter);
我在其他帖子上也看到过类似的问题,但我一点运气都没有。最终,我不会试图修复我的代码,而是找到一段允许我执行spinner.setAdapter(adapter)的代码;没有得到NullPointerException。此操作需要在活动开始时执行,因此基本上需要涉及onCreate()方法。做:

 Spinner spinner = (Spinner) findViewById(R.id.spinner1);
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
            R.array.priority_array, android.R.layout.simple_spinner_item);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner.setAdapter(adapter);
Spinner-Spinner=(Spinner)findviewbyd(R.id.spinner1);
ArrayAdapter=ArrayAdapter.createFromResource(此,
R.array.priority_数组,android.R.layout.simple_微调器_项);
setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
旋转器。设置适配器(适配器);
将此代码放在onCreate()中会给我一个NullPointerException,因为微调器在片段中,而不是活动中

以下是我正在尝试的当前代码,但它不起作用,但我还是在寻找问题的解决方案,而不是我的代码:

 public class ActivityInfo extends ActionBarActivity {

Spinner b;
Myfragment fragment;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_activity_info);

    Intent intent = getIntent();
    String name = intent.getStringExtra("Name");

    FragmentManager fragmentManager = getSupportFragmentManager();
    FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
    fragment = new Myfragment();
    fragmentTransaction.add(R.id.RelLayout, fragment);
    fragmentTransaction.commit();

    b = (Spinner) findViewById(R.id.spinner1);
    fragment.addSpinner();





}

@Override
public boolean onCreateOptionsMenu(Menu menu) {

    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.activity_info, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();
    if (id == R.id.action_settings) {
        return true;
    }
    return super.onOptionsItemSelected(item);
}

/**
 * A placeholder fragment containing a simple view.
 */

public static class Myfragment extends Fragment {

    RelativeLayout relativeLayout; 
     View rootView;
     @Override
        public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
           relativeLayout = (RelativeLayout) rootView.findViewById(R.id.RelLayout);
        }
     @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                     Bundle savedInstanceState) {
        rootView = inflater.inflate(R.layout.fragment_activity_info, container, false);

         return rootView;
         }
     public void addSpinner()
      {

         Spinner spin = new Spinner(getActivity()); // needs activity context
        ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(getActivity(),
                R.array.priority_array, android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spin.setAdapter(adapter);
         relativeLayout.addView(spin);
      }
}
公共类ActivityInfo扩展了ActionBarActivity{
旋转器b;
Myfragment片段;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u activity\u info);
Intent=getIntent();
字符串名称=intent.getStringExtra(“名称”);
FragmentManager FragmentManager=getSupportFragmentManager();
FragmentTransaction FragmentTransaction=fragmentManager.beginTransaction();
fragment=新的Myfragment();
fragmentTransaction.add(R.id.RelLayout,fragment);
fragmentTransaction.commit();
b=(喷丝器)findViewById(R.id.spinner1);
fragment.addSpinner();
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(R.menu.activity\u info,menu);
返回true;
}
@凌驾
公共布尔值onOptionsItemSelected(菜单项项){
//处理操作栏项目单击此处。操作栏将
//自动处理Home/Up按钮上的点击,只要
//在AndroidManifest.xml中指定父活动时。
int id=item.getItemId();
if(id==R.id.action\u设置){
返回true;
}
返回super.onOptionsItemSelected(项目);
}
/**
*包含简单视图的占位符片段。
*/
公共静态类Myfragment扩展了Fragment{
相对的相对的;
视图根视图;
@凌驾
已创建ActivityState上的公共无效(Bundle savedInstanceState){
super.onActivityCreated(savedInstanceState);
relativeLayout=(relativeLayout)rootView.findViewById(R.id.RelLayout);
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
rootView=充气机。充气(R.layout.fragment\u activity\u info,container,false);
返回rootView;
}
公共void addSpinner()
{
微调器旋转=新微调器(getActivity());//需要活动上下文
ArrayAdapter=ArrayAdapter.createFromResource(getActivity(),
R.array.priority_数组,android.R.layout.simple_微调器_项);
setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
spin.setAdapter(适配器);
relativeLayout.addView(自旋);
}
}
}尝试这样做:

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

    View rootView = inflater.inflate(R.layout.fragment_activity_info, null);
    Spinner spinner = (Spinner) rootView.findViewById(R.id.spinner1);

    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(getActivity(),
        R.array.priority_array, android.R.layout.simple_spinner_item);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner.setAdapter(adapter);

    return rl;
}
@覆盖
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图根视图=充气机。充气(R.layout.fragment\u activity\u info,null);
微调器微调器=(微调器)rootView.findviewbyd(R.id.spinner1);
ArrayAdapter=ArrayAdapter.createFromResource(getActivity(),
R.array.priority_数组,android.R.layout.simple_微调器_项);
setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
旋转器。设置适配器(适配器);
返回rl;
}

是否要使用id spinner1对spinner1进行充气?是的,我正在尝试对spinner1进行充气,这样spinner1就不会为空。为什么不在onCreateView中对其进行充气呢?这是我在发布的代码中尝试过的,但不起作用。但我现在有了我的答案,感谢下面的回答。谢谢你的回复。哇,说实话,我不敢相信事情真的那么简单。我花了好几个小时研究如何做这样的事情,得到了不起作用的复杂答案。非常感谢你,这正是它应该做的。没问题,欢迎你。我希望你在我的答案上签字确认是正确的。谢谢