[英]How to inflate a view in a fragment?
活动开始时,我正在尝试将内容分配给片段中的微调框。 我发现,首先需要对片段进行膨胀,对布局进行膨胀,然后对视图进行膨胀,以便为其分配以下代码:
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);
将此代码放入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);
}
}
}
尝试这样做:
@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;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.