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