2013-06-14 3 views
0
public class MainActivity extends FragmentActivity { 
    /** 
    * Note that this may be null if the Google Play services APK is not available. 
    */ 
    private GoogleMap mMap; 
    final EditText editText = (EditText) findViewById(R.id.editText1); 



<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:paddingLeft="16dp" 
    android:paddingRight="16dp" 
    android:orientation="vertical" > 
    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/hello_world" /> 
    <EditText 
     android:id="@+id/editText1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:ems="10" 
     android:inputType="textPostalAddress" 
     android:imeOptions="actionSend" > 

     <requestFocus /> 
    </EditText> 

    <fragment 
     android:id="@+id/map" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     class="com.google.android.gms.maps.SupportMapFragment"/> 

</LinearLayout> 

По какой-то причине комментирование только строку:Android EditText не загружая

//final EditText editText = (EditText) findViewById(R.id.editText1); 

то мое приложение работает нормально.

Как только я добавляю его обратно в:

final EditText editText = (EditText) findViewById(R.id.editText1); 

fragmentactivity не загружается и завершается с ошибкой на андроид устройства.

  06-13 18:52:07.924: E/Trace(28101): error opening trace file: No such file or directory (2) 
      06-13 18:52:08.004: E/AndroidRuntime(28101): FATAL EXCEPTION: main 
      06-13 18:52:08.004: E/AndroidRuntime(28101): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.methanegaszonegeolocator/com.example.methanegaszonegeolocator.MainActivity}: java.lang.NullPointerException 
      06-13 18:52:08.004: E/AndroidRuntime(28101): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2012) 
      06-13 18:52:08.004: E/AndroidRuntime(28101): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2113) 
      06-13 18:52:08.004: E/AndroidRuntime(28101): at android.app.ActivityThread.access$700(ActivityThread.java:139) 
      06-13 18:52:08.004: E/AndroidRuntime(28101): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1224) 
      06-13 18:52:08.004: E/AndroidRuntime(28101): at android.os.Handler.dispatchMessage(Handler.java:99) 
      06-13 18:52:08.004: E/AndroidRuntime(28101): at android.os.Looper.loop(Looper.java:137) 
      06-13 18:52:08.004: E/AndroidRuntime(28101): at android.app.ActivityThread.main(ActivityThread.java:4918) 
      06-13 18:52:08.004: E/AndroidRuntime(28101): at java.lang.reflect.Method.invokeNative(Native Method) 
      06-13 18:52:08.004: E/AndroidRuntime(28101): at java.lang.reflect.Method.invoke(Method.java:511) 
      06-13 18:52:08.004: E/AndroidRuntime(28101): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1004) 
      06-13 18:52:08.004: E/AndroidRuntime(28101): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:771) 

Линия uncomments нормально без ошибок или предупреждений любого рода, так что я знаю, что есть импорт вниз ...

ответ

0

Это сводится к тому, что не в состоянии назвать findViewById, когда класс инициализирует.

Вы должны позвонить этой строке в свой метод onCreate.

Если вам нужен доступ к нему везде в вашем классе, то в верхней части класса делать:

final EditText editText; 

Затем в методе OnCreate делать:

editText = (EditText) findViewById(R.id.editText1); 
0

Вы должны поместить следующую строку внутри метода onCreate.

final EditText editText = (EditText) findViewById(R.id.editText1); 

Так что в вашем случае, это было бы ...

public class MainActivity extends FragmentActivity { 

    /** 
    * Note that this may be null if the Google Play services APK is not available. 
    */ 
    private GoogleMap mMap; 
    final EditText editText; 

    @Override 
    protected void onCreate(Bundle arg0) { 
     super.onCreate(arg0); 
     setContentView(R.layout.activity_main); // PASS YOUR LAYOUT HERE 

     editText = (EditText) findViewById(R.id.editText1); 
    } 
Смежные вопросы