2016-08-29 7 views
1

私のアクティビティに編集テキストがあり、フォーカスを要求したいと思います。ただし、アクティビティを起動すると常にクラッシュします。nullポインタ例外を指定するrequestFocus()

Javaコード:

foodText = (EditText) findViewById(R.id.foodName); 
prepText = (EditText) findViewById(R.id.prepText); 
foodText.requestFocus(); 

Activity.xml:

<?xml version="1.0" encoding="utf-8"?> 
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/activity_add_food" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.example.rcadit.foodgenie.AddFood"> 
    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
       android:orientation="vertical" 
style="@style/AppTheme" 
     > 


     <ScrollView 
      android:layout_width="match_parent" 
      android:layout_height="match_parent"> 



      <LinearLayout 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:orientation="vertical"> 
      <LinearLayout 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:orientation="vertical" 
       android:background="@color/colorAccent" 
       android:transitionName="addFood"> 


       <EditText 
        android:id="@+id/foodName" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:hint="Food name" 
        android:textSize="32sp" 
android:inputType="textCapWords" 
android:textColor="@color/colorIcons" 
        android:layout_marginLeft="64dp" 
        android:layout_marginRight="64dp" 
        android:layout_marginBottom="32dp" 
        android:layout_marginTop="32dp" 
        android:textColorHint="@color/colorIcons"/> 
      </LinearLayout> 

      </LinearLayout> 


     </ScrollView> 
    </LinearLayout> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" 
     android:paddingLeft="@dimen/activity_horizontal_margin"> 


     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:padding="16dp" 

      android:textSize="16sp" 

      android:text="Hunger Level" /> 
     <Spinner 
      android:id="@+id/hunger_spinner" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 


      android:padding="16dp" 

      > 

     </Spinner> 
     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:padding="16dp" 
      android:textSize="16sp" 
      android:text="Cuisine" /> 
     <Spinner 
      android:id="@+id/cuisine_spinner" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 


      android:padding="16dp" 

      > 

     </Spinner> 
     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:padding="16dp" 
      android:textSize="16sp" 
      android:text="Preparation Time" /> 
     <EditText 
      android:id="@+id/prepText" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textSize="16sp" 
      android:padding="16dp" 
      android:hint="Enter Preparation Time"/> 


     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:padding="16dp" 
      android:textSize="16sp" 
      android:text="Course" /> 
     <Spinner 
      android:id="@+id/course_spinner" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 


      android:padding="16dp" 

      > 

     </Spinner> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Salty" 
      android:padding="16dp" 
      android:textSize="16sp" 
      /> 
     <TextView 
      android:id="@+id/howSalty" 
      android:hint="Salty" 
      android:textSize="12sp" 
      android:paddingBottom="8dp" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center_horizontal" 
      /> 

     <SeekBar 
      android:id="@+id/salty" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:thumbTint="@color/colorAccent" 
      android:progressTint="@color/colorAccent" 
      android:max="2" 
      android:progress="1" 
      /> 
     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Sweet" 
      android:padding="16dp" 
      android:textSize="16sp"/> 
     <TextView 
      android:id="@+id/howSweet" 
      android:hint="Sweet" 
      android:textSize="12sp" 
      android:paddingBottom="8dp" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center_horizontal"/> 
     <SeekBar 
      android:thumbTint="@color/colorAccent" 
      android:progressTint="@color/colorAccent" 
      android:id="@+id/sweet" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:max="2" 
      android:progress="1" 
      /> 


     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Spicy" 
      android:padding="16dp" 
      android:textSize="16sp"/> 

     <TextView 
      android:id="@+id/howSpicy" 
      android:hint="Spicy" 
      android:textSize="12sp" 
      android:paddingBottom="8dp" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center_horizontal" 
      /> 
     <SeekBar 
      android:thumbTint="@color/colorAccent" 
      android:progressTint="@color/colorAccent" 
      android:id="@+id/spicy" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:max="2" 
      android:progress="1" 

      /> 


     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 

      android:padding="16dp" 
      android:text="Special Requirements" 

      android:textSize="16sp" /> 

     <GridLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 

      android:layout_margin="16dp" 
      android:columnCount="2" 
      android:rowCount="3"> 



      <CheckBox 
       android:layout_width="wrap_content" 
       android:id="@+id/dairyFree" 
       android:buttonTint="@color/colorAccent" 
       android:layout_height="wrap_content" 
       android:text="Dairy Free" 
       android:textSize="16sp" 
       android:onClick="onCheckboxClicked"/> 

      <CheckBox 
       android:layout_width="wrap_content" 
       android:id="@+id/nutFree" 
       android:buttonTint="@color/colorAccent" 
       android:layout_height="wrap_content" 
       android:text="Nut Free" 
       android:textSize="16sp" 
       android:onClick="onCheckboxClicked"/> 

      <CheckBox 
       android:id="@+id/eggFree" 
       android:layout_width="wrap_content" 
       android:buttonTint="@color/colorAccent" 
       android:layout_height="wrap_content" 
       android:text="Egg Free" 
       android:textSize="16sp" 
       android:onClick="onCheckboxClicked" 
       /> 

      <CheckBox 
       android:id="@+id/vegetarian" 
       android:layout_width="wrap_content" 
       android:buttonTint="@color/colorAccent" 
       android:layout_height="wrap_content" 
       android:text="Vegetarian" 
       android:textSize="16sp" 
       android:onClick="onCheckboxClicked"/> 
     </GridLayout> 
     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 

      android:layout_margin="16dp" 
      android:onClick="add" 

      android:text="Add" /> 
    </LinearLayout> 

</android.support.constraint.ConstraintLayout> 

のIDのが正しいように私は他の質問を見てきましたが、私のコードが動作しない理由を私は見ることができないと私はコード内の欠陥を見つけることができません。

ログファイル:

E/AndroidRuntime: FATAL EXCEPTION: main 
        Process: com.example.rcadit.foodgenie, PID: 3221 
        java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.rcadit.foodgenie/com.example.rcadit.foodgenie.AddFood}: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.widget.EditText.requestFocus()' on a null object reference 
         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2416) 
         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476) 
         at android.app.ActivityThread.-wrap11(ActivityThread.java) 
         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344) 
         at android.os.Handler.dispatchMessage(Handler.java:102) 
         at android.os.Looper.loop(Looper.java:148) 
         at android.app.ActivityThread.main(ActivityThread.java:5417) 
         at java.lang.reflect.Method.invoke(Native Method) 
         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
        Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.widget.EditText.requestFocus()' on a null object reference 
         at com.example.rcadit.foodgenie.AddFood.onCreate(AddFood.java:60) 
         at android.app.Activity.performCreate(Activity.java:6237) 
         at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1107) 
         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2369) 
         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2476)  
         at android.app.ActivityThread.-wrap11(ActivityThread.java)  
         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1344)  
         at android.os.Handler.dispatchMessage(Handler.java:102)  
         at android.os.Looper.loop(Looper.java:148)  
         at android.app.ActivityThread.main(ActivityThread.java:5417)  
         at java.lang.reflect.Method.invoke(Native Method)  
         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)  
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)  
I/Process: Sending signal. PID: 3221 SIG: 9 
Application terminated. 

何が悪いのでしょうか?

+0

メソッドを呼び出す場所の完全なコードを投稿してください。 – Kushan

+0

実際には、これら3つの行がどこにあるのかを知る必要があります "foodText =(EditText)findViewById(R.id.foodName); prepText =(EditText)findViewById(R .id.prepText); foodText.requestFocus(); " – LBes

+0

レイアウト自体に書き込んでみてください。 –

答えて

2

コードを使用する前にsetContentView()を呼び出さないことでエラーを再現することができました。 だから、それを行うための正しい方法は、実行することです。

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.your_activity); 
     foodText = (EditText) findViewById(R.id.foodName); 
     prepText = (EditText) findViewById(R.id.prepText); 
     foodText.requestFocus(); 
} 

your_activityxml拡張子のない基本的にあなたのxmlファイルの名前です。 ビューの詳細については、linkまたはlinkを確認することができます。実行している場合は、2番目のアクティビティが作成されます。 (共に公式文書を参照し、例と説明を書いてください)

また、setContentView()メソッドのファイルの正しい名前を使用しないと同じエラーが発生すると思います。

1

私は私の最後に、正確にあなたのparamsでうまく動作しようとしました。

enter image description here

MainActivity:

public class MainActivity extends AppCompatActivity { 

    Context context; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     context = this; 

     EditText number = (EditText) findViewById(R.id.foodName); 
     number.requestFocus(); 

    } 
} 

activity_main.xml:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/base" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_margin="10dp" 
    android:background="@color/white" 
    android:orientation="horizontal" 
    android:weightSum="10"> 


    <EditText 
     android:id="@+id/foodName" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginBottom="32dp" 
     android:layout_marginLeft="64dp" 
     android:layout_marginRight="64dp" 
     android:layout_marginTop="32dp" 
     android:hint="Food name" 
     android:inputType="textCapWords" 
     android:textColor="@color/colorPrimaryDark" 
     android:textColorHint="@color/colorPrimaryDark" 
     android:textSize="32sp" /> 

</RelativeLayout> 
0

私はあなたがsetContentView()メソッドの前findViewById()メソッドを呼び出すと思います。