2014-05-22 75 views
-1

我还是一个新手,使用xml进行编程和编程,但我在这里要做的是添加一个spinner。但由于某种原因,我无法使spinner工作。我试图添加2个不同的,但结果保持不变。如果我添加spinners中的1,则应用程序停止。如果我删除了整个spinner代码,它至少会打开该活动,但它完全空白。尽管我在第二项活动的fragment中添加了一些textviews应用程序在打开第二个活动后停止

有人能指出我在这里做错了吗?

这是我到目前为止进行的第二项活动。

public class OpenBMI extends Activity { 

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

    //Spinner 1 
/* 
    // Array 
    String gender[] = {"Male","Female"}; 

    // Create spinner 
    Spinner spinner = (Spinner) findViewById(R.id.inputGender); 

    // Application from array to spinner 
    ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, gender); 
    spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

    // Drop down 
    spinner.setAdapter(spinnerArrayAdapter); 
*/ 

    //Spinner 2 
    /* 
    Spinner spinGender; 

    //Gets spinner from layout 
    spinGender = (Spinner) findViewById(R.id.spinGender); 

    //Gets string for spinner 
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, getResources() 
         .getStringArray(R.array.inputGender)); 


    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     spinGender.setAdapter(adapter); 


    //layout voor invoer actions. Bewaren voor verschil bmi tussen man en vrouw 
    spinGender.setOnItemSelectedListener(new OnItemSelectedListener() { 
      @Override 
      public void onItemSelected(AdapterView<?> arg0, View arg1, 
        int position, long id) { 
      } 

      @Override 
      public void onNothingSelected(AdapterView<?> arg0) { 
      } 
     }); */ 


} 

} 

这是我片段

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context="com.example.practicum.OpenBMI$PlaceholderFragment" > 


<EditText 
    android:id="@+id/inputLength" 
    android:layout_width="80dp" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/spinGender" 
    android:layout_marginTop="45dp" 
    android:layout_marginLeft="250dp" 
    android:ems="10" 
    android:inputType="number" /> 

<EditText 
    android:id="@+id/inputWeight" 
    android:layout_width="80dp" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/inputLength" 
    android:layout_centerVertical="true" 
    android:layout_marginTop="45dp" 
    android:layout_marginLeft="250dp" 
    android:ems="10" 
    android:inputType="number" /> 

<TextView 
    android:id="@+id/stringGender" 
    android:layout_width="100dp" 
    android:layout_height="wrap_content" 
    android:layout_alignBottom="@+id/spinGender" 
    android:ems="10"/> 

<TextView 
    android:id="@+id/stringLength" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignBottom="@+id/inputLength" 
    android:ems="10" 
    android:text="@string/lengte"/> 

<TextView 
    android:id="@+id/StringWeight" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignBottom="@+id/inputWeight" 
    android:ems="10" 
    android:text="@string/gewicht"/> 

<Spinner 
    android:id="@+id/spinGender" 
    android:layout_width="80dp" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:layout_alignRight="@+id/inputLength" 
    android:layout_marginTop="60dp" 
    android:layout_toRightOf="@+id/stringGender" 
    android:ems="10" 
    android:paddingLeft="100dp" 
    android:popupBackground="@android:color/white" 
    android:scrollbars="none" 
    android:spinnerMode="dropdown"/> 

</RelativeLayout> 

,这是摆在我的strings

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <string name="app_name">Practicum</string> 
    <string name="action_settings">Settings</string> 
    <string name="title_activity_open_bmi">OpenBMI</string> 
    <string name="bmi">BMI</string> 
    <string name="voortgang_streef">Voortgang/Streef</string> 
    <string name="dagboek">Dagboek</string> 
    <string name="setting">Setting</string> 
    <string name="lengte">Lengte</string> 
    <string name="gewicht">Gewicht</string> 

    <string-array name="inputGender"> 
     <item>Man</item> 
     <item>Vrouw</item> 
    </string-array> 

</resources> 

的logcat(我花了一段时间来添加manifestlogcat因为我“我还在搞清楚安卓)

java.lang.RuntimeExceptionUnable to start activity ComponentInfo{com.example.practicum/com.example.practicum.OpenBMI}java.lang.NullPointerException 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230) 
at android.app.ActivityThread.access$600(ActivityThread.java:141) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:137) 
at android.app.ActivityThread.main(ActivityThread.java:5041) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:511) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
at dalvik.system.NativeStart.main(Native Method) Caused byjava.lang.NullPointerException 
at com.example.practicum.OpenBMI.onCreate(OpenBMI.java:55) 
at android.app.Activity.performCreate(Activity.java:5104) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144) 

清单

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example.practicum" 
android:versionCode="1" 
android:versionName="1.0" > 

<uses-sdk 
    android:minSdkVersion="10" 
    android:targetSdkVersion="19" /> 

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name="com.example.practicum.MainActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name="com.example.practicum.OpenBMI" 
     android:label="@string/title_activity_open_bmi" > 
    </activity> 
</application> 

</manifest> 
+0

logcat和Android清单!你能提供这些吗? – ashu

+0

刚刚添加了清单和logcat!不知道我是否提供了logcat的一部分,你需要查看我出错的地方。 – TApatty

+0

你现在可以突出显示你的OpenBMI类的55行吗? – ashu

回答

0

在您的主要活动就像你的第二个你应该找到微调:

Spinner genderSpinner = (Spinner) findViewById(R.id.spinGender);

在MainActivity第一微调尝试将一个EditText投射到一个Spinner对象(它正在崩溃的问题)

这很难说,因为你没有发布你正在得到的确切的错误。用您的Logcat输出编辑您的文章,这将更容易诊断问题。

+0

是的,我评论整个第一个微调,看看第二个是否工作,所以我可以检查问题是否在我的活动代码或其他地方。但是我也遇到了同样的问题。我添加了我的清单和部分日志(我认为这很重要)。 – TApatty

+0

是您在页面上显示的布局的activity_open_bmi.xml吗?因为我认为它与你的contentView不是你想要使用的片段有关。 – Brandon

+0

我在这里面对自己这么刻苦。感谢allot为我指出这一点。 contentView被设置在我的activity_open_bmi.xml布局,当我塞满了我的fragment_open_bmi.xml中的一切。 – TApatty

0

你可以在你的代码做到这一点:

XML

<Spinner 
    android:id="@+id/spinner" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" /> 

的Java

public class MainActivity extends Activity implements OnItemSelectedListener{ 

private Spinner spinner; 
private static final String[]paths = {"item 1", "item 2", "item 3"}; 

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

    spinner = (Spinner)findViewById(R.id.spinner); 
    ArrayAdapter<String>adapter = new ArrayAdapter<String>("CLASS-NAME".this, 
      android.R.layout.simple_spinner_item,paths); 

    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    spinner.setAdapter(adapter); 
    spinner.setOnItemSelectedListener(this); 

} 

public void onItemSelected(AdapterView<?> parent, View v, int position, long id) { 

    switch (position) { 
     case 0: 
      // What ever you want to happen when item 1 selected 
      break; 
     case 1: 
      // What ever you want to happen when item 2 selected 
      break; 
     case 2: 
      // What ever you want to happen when item 3 selected 
      break; 

    } 
} 
} 
0

你的微调是分段布局,而不是在活动布局你在onCreate()中膨胀。这就是为什么没有找到。您应该尽早访问其onCreateView()中的片段视图。

您似乎也删除了代码模板生成的PlaceholderFragment片段事务,该事务会使片段最终实例化。

  1. 恢复onCreate()中的片段事务。

  2. findViewById()等代码移动到片段的onCreateView()

请参阅NullPointerException accessing views in onCreate()了解更多信息。

相关问题