Android initial development: findViewById problem

When starting my main application, the following error message appears. The application consists of a button named button1 and textView called topLeft.

07-01 15:33:02.754: D/AndroidRuntime(2334): Shutting down VM 07-01 15:33:02.754: W/dalvikvm(2334): threadid=1: thread exiting with uncaught exception (group=0x40a13300) 07-01 15:33:02.984: E/AndroidRuntime(2334): FATAL EXCEPTION: main 07-01 15:33:02.984: E/AndroidRuntime(2334): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.myfirstapp/com.example.myfirstapp.MainActivity}: java.lang.NullPointerException 07-01 15:33:02.984: E/AndroidRuntime(2334): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1983) 07-01 15:33:02.984: E/AndroidRuntime(2334): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084) 07-01 15:33:02.984: E/AndroidRuntime(2334): at android.app.ActivityThread.access$600(ActivityThread.java:130) 07-01 15:33:02.984: E/AndroidRuntime(2334): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195) 07-01 15:33:02.984: E/AndroidRuntime(2334): at android.os.Handler.dispatchMessage(Handler.java:99) 07-01 15:33:02.984: E/AndroidRuntime(2334): at android.os.Looper.loop(Looper.java:137) 07-01 15:33:02.984: E/AndroidRuntime(2334): at android.app.ActivityThread.main(ActivityThread.java:4745) 07-01 15:33:02.984: E/AndroidRuntime(2334): at java.lang.reflect.Method.invokeNative(Native Method) 07-01 15:33:02.984: E/AndroidRuntime(2334): at java.lang.reflect.Method.invoke(Method.java:511) 07-01 15:33:02.984: E/AndroidRuntime(2334): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 07-01 15:33:02.984: E/AndroidRuntime(2334): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 07-01 15:33:02.984: E/AndroidRuntime(2334): at dalvik.system.NativeStart.main(Native Method) 07-01 15:33:02.984: E/AndroidRuntime(2334): Caused by: java.lang.NullPointerException 07-01 15:33:02.984: E/AndroidRuntime(2334): at android.app.Activity.findViewById(Activity.java:1825) 07-01 15:33:02.984: E/AndroidRuntime(2334): at com.example.myfirstapp.MainActivity.<init>(MainActivity.java:28) 07-01 15:33:02.984: E/AndroidRuntime(2334): at java.lang.Class.newInstanceImpl(Native Method) 07-01 15:33:02.984: E/AndroidRuntime(2334): at java.lang.Class.newInstance(Class.java:1319) 07-01 15:33:02.984: E/AndroidRuntime(2334): at android.app.Instrumentation.newActivity(Instrumentation.java:1053) 07-01 15:33:02.984: E/AndroidRuntime(2334): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1974) 07-01 15:33:02.984: E/AndroidRuntime(2334): ... 11 more 

When trying to use findViewById, this error appears on line 28.

The program is as follows:

 package com.example.myfirstapp; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; public class MainActivity extends Activity implements OnClickListener{ int a = 0; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main, menu); return true; } Button button1 = (Button) findViewById(R.id.button1); TextView topLeft = (TextView) findViewById(R.id.textView2); // button1.setOnClickListener( this ); public void onClick(View v) { // TODO Auto-generated method stub } } 

What does it mean? Why does my code have problems executing something along the lines of a link to a R.java file?

 R.java does have public static final class id { public static final int button1=0x7f080001; public static final int menu_settings=0x7f080003; public static final int textView1=0x7f080000; public static final int textView2=0x7f080002; 

Thanks in advance.

+6
source share
1 answer

You call findViewById as part of your field definition, after which the layout does not swell (this happens when you call setContentView ). findViewById does not find the view, so the link is set to null .

Moving your findViewById calls inside onCreate , after calling setContentView should fix it.

+15
source

Source: https://habr.com/ru/post/919451/


All Articles