java - 如何膨胀 fragment 中的 View ?

标签 java android android-layout android-fragments

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

 spinner.setAdapter(adapter);

我看过其他关于类似问题的帖子,但我没有得到任何运气。最终,我并不是要修复我的代码,而是找到一段允许我执行 spinner.setAdapter(adapter); 的代码。没有得到 NullPointerException。这个 Action 需要在 Activity 启动时发生,所以基本上需要涉及 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 异常,因为微调器位于 fragment 而不是 Activity 内部。

这是我正在尝试的当前代码,但不起作用,但同样,我正在寻找问题的解决方案而不是我的代码:

 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;
}

关于java - 如何膨胀 fragment 中的 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24957671/

相关文章:

java - JUnit 测试无法从另一个模块类中读取属性文件

android - ViewBinding.getRoot().getLayoutParams() 总是返回 null

java - 将联系人写入联系人数据库 - Android 2.1

java - maven简单项目中springApplication中的IllegalAccessError

java - 如何通过某种类型的变量使用 stream() 求和

java - Soapui - 警告 - 未检测到文档的语法约束(DTD 或 XML 模式)

android - Facebook SDK Android : OnSuccess called but OnCancel not called

android - EditText 上的软键盘

Android:以编程方式使用 fragment

Android——缩放屏幕布局的常用技巧