有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

有片段的java活动(bug)与没有片段的java活动(ok)

我创建了一个用于学习的小应用程序。在主活动中有两个按钮:一个用于包含文本和微调器的片段活动,另一个用于不包含文本和微调器的片段活动

以下是正在工作的无片段活动的代码:

public class NoFragmentActivity extends Activity {

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

    Spinner spinner = (Spinner) findViewById(R.id.planets_spinner);
    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
    R.array.planets_array, 安卓.R.layout.simple_spinner_item);
    adapter.setDropDownViewResource(安卓.R.layout.simple_spinner_dropdown_item);
    spinner.setAdapter(adapter);

}

activity_no_fragment.xml文件只是textview和微调器

下面是片段的活动,它给了我这样一个bug:

http://imgur.com/A4hqdtJ

public class SpinerActivity extends Activity { //with fragment

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.fragment_spiner); //shouldn't it be activity_spinner?
    if (savedInstanceState == null) {
        getFragmentManager().beginTransaction()
                .add(R.id.kontener, new PlaceholderFragment()) //kontener refers to fragment_spiner.xml
                .commit();
    }


    Spinner spinner2 = (Spinner) findViewById(R.id.planets_spinner2);
    ArrayAdapter<CharSequence> adapter2 = ArrayAdapter.createFromResource(this,
            R.array.planets_array, 安卓.R.layout.simple_spinner_item);
    adapter2.setDropDownViewResource(安卓.R.layout.simple_spinner_dropdown_item);
    spinner2.setAdapter(adapter2);

}

Activity_spiner.xml是:

FrameLayout

    (etc...)
    安卓:id="@+id/container"
    (etc...)

片段_尖晶石几乎与activity_no_fragment相同:

RelativeLayout 
    (etc...)
    安卓:id="@+id/kontener"
    (etc...)

TextView
    安卓:id="@+id/tekstspiner"
    (etc...) 
Spinner
    安卓:id="@+id/planets_spinner2"
   (etc...)

我有一些问题无法解决:

  1. 为什么我会有这样的错误?如何修复代码
  2. 在此行的SpinNeActivity文件中:setContentView(R.layout.fragment_spiner);是否应该有activity_微调器而不是fragment_微调器
    我在没有微调器的情况下创建的另一个带有片段的空白活动在这里有activity_blank(不像我的应用程序那样有*\u片段),并且工作正常
    当我改变它时,我得到了NPE。为什么?我怎样才能解决它

编辑:这里是包含类和xml文件的zip文件:https://www.sendspace.com/file/ofh8yi


共 (1) 个答案

  1. # 1 楼答案

    在SpinePractivity中,设置同一布局两次。一个用于活动,另一个用于fragemnt。这就是为什么你要看两遍

            public class SpinerActivity extends Activity {
    
                @Override
                protected void onCreate(Bundle savedInstanceState) {
                    super.onCreate(savedInstanceState);
                    setContentView(R.layout.fragment_spiner);  // First one
                    if (savedInstanceState == null) {
                        getFragmentManager().beginTransaction()
                                .add(R.id.kontener, new PlaceholderFragment())
                                .commit();
                    }
    
    
                    Spinner spinner2 = (Spinner) findViewById(R.id.planets_spinner2);
            // Create an ArrayAdapter using the string array and a default spinner layout
                    ArrayAdapter<CharSequence> adapter2 = ArrayAdapter.createFromResource(this,
                            R.array.planets_array, android.R.layout.simple_spinner_item);
            // Specify the layout to use when the list of choices appears
                    adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
            // Apply the adapter to the spinner
                    spinner2.setAdapter(adapter2);
    
                }
    
    
    
                @Override
                public boolean onCreateOptionsMenu(Menu menu) {
                    // Inflate the menu; this adds items to the action bar if it is present.
                    getMenuInflater().inflate(R.menu.spiner, 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 PlaceholderFragment extends Fragment {
    
                    public PlaceholderFragment() {
                    }
    
                    @Override
                    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                            Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_spiner, container, false);  //second one 
                        return rootView;
                    }
                }
            }