简体   繁体   中英

Passing variables from a activity to another

I try to send a variable from a activity to another but i get an error.I am using this because i want to send some data about each item of a menu to another activity and then modify the text views according to the data received. I've attached only one information that i want to sent which is the title.. I've attached my activities and the LogCat error:

MainActivity

        Bundle bundle= new Bundle();
        bundle.putString("Title", lessons_titles[position]);                                  

        Intent intent = new Intent(context, Example1.class);

        intent.putExtras(bundle);
        context.startActivity(intent);

Passing Activity

    Bundle bundle = getIntent().getExtras();
    String title = bundle.getString("Title");                           
    title_view.setText(title);      

LogCat Error

03-12 17:18:31.529: E/AndroidRuntime(1873): FATAL EXCEPTION: main
03-12 17:18:31.529: E/AndroidRuntime(1873): java.lang.RuntimeException: Unable to    instantiate activity ComponentInfo{com.example.test/com.example.test.Example1}:   java.lang.NullPointerException
03-12 17:18:31.529: E/AndroidRuntime(1873):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2137)
03-12 17:18:31.529: E/AndroidRuntime(1873):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
03-12 17:18:31.529: E/AndroidRuntime(1873):     at android.app.ActivityThread.access$600(ActivityThread.java:141)
03-12 17:18:31.529: E/AndroidRuntime(1873):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
03-12 17:18:31.529: E/AndroidRuntime(1873):     at  android.os.Handler.dispatchMessage(Handler.java:99)
03-12 17:18:31.529: E/AndroidRuntime(1873):     at android.os.Looper.loop(Looper.java:137)
03-12 17:18:31.529: E/AndroidRuntime(1873):     at android.app.ActivityThread.main(ActivityThread.java:5103)
03-12 17:18:31.529: E/AndroidRuntime(1873):     at java.lang.reflect.Method.invokeNative(Native Method)
03-12 17:18:31.529: E/AndroidRuntime(1873):     at java.lang.reflect.Method.invoke(Method.java:525)
03-12 17:18:31.529: E/AndroidRuntime(1873):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
03-12 17:18:31.529: E/AndroidRuntime(1873):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
03-12 17:18:31.529: E/AndroidRuntime(1873):     at dalvik.system.NativeStart.main(Native Method)
03-12 17:18:31.529: E/AndroidRuntime(1873): Caused by: java.lang.NullPointerException
03-12 17:18:31.529: E/AndroidRuntime(1873):     at android.app.Activity.findViewById(Activity.java:1853)
03-12 17:18:31.529: E/AndroidRuntime(1873):     at com.example.test.Example1.<init>(Example1.java:10)
03-12 17:18:31.529: E/AndroidRuntime(1873):     at java.lang.Class.newInstanceImpl(Native Method)
03-12 17:18:31.529: E/AndroidRuntime(1873):     at java.lang.Class.newInstance(Class.java:1130)
03-12 17:18:31.529: E/AndroidRuntime(1873):     at android.app.Instrumentation.newActivity(Instrumentation.java:1061)
03-12 17:18:31.529: E/AndroidRuntime(1873):     at    android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2128)
03-12 17:18:31.529: E/AndroidRuntime(1873):     ... 11 more
03-12 17:21:55.112: E/AndroidRuntime(2031): FATAL EXCEPTION: main
03-12 17:21:55.112: E/AndroidRuntime(2031): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.test/com.example.test.Example1}: java.lang.NullPointerException
03-12 17:21:55.112: E/AndroidRuntime(2031):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2137)
03-12 17:21:55.112: E/AndroidRuntime(2031):     at  android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
03-12 17:21:55.112: E/AndroidRuntime(2031):     at android.app.ActivityThread.access$600(ActivityThread.java:141)
03-12 17:21:55.112: E/AndroidRuntime(2031):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
03-12 17:21:55.112: E/AndroidRuntime(2031):     at android.os.Handler.dispatchMessage(Handler.java:99)
03-12 17:21:55.112: E/AndroidRuntime(2031):     at android.os.Looper.loop(Looper.java:137)
03-12 17:21:55.112: E/AndroidRuntime(2031):     at android.app.ActivityThread.main(ActivityThread.java:5103)
03-12 17:21:55.112: E/AndroidRuntime(2031):     at java.lang.reflect.Method.invokeNative(Native Method)
03-12 17:21:55.112: E/AndroidRuntime(2031):     at java.lang.reflect.Method.invoke(Method.java:525)
03-12 17:21:55.112: E/AndroidRuntime(2031):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
03-12 17:21:55.112: E/AndroidRuntime(2031):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
03-12 17:21:55.112: E/AndroidRuntime(2031):     at dalvik.system.NativeStart.main(Native Method)
03-12 17:21:55.112: E/AndroidRuntime(2031): Caused by: java.lang.NullPointerException
03-12 17:21:55.112: E/AndroidRuntime(2031):     at   android.app.Activity.findViewById(Activity.java:1853)
03-12 17:21:55.112: E/AndroidRuntime(2031):     at com.example.test.Example1.<init>(Example1.java:10)
03-12 17:21:55.112: E/AndroidRuntime(2031):     at java.lang.Class.newInstanceImpl(Native Method)
03-12 17:21:55.112: E/AndroidRuntime(2031):     at java.lang.Class.newInstance(Class.java:1130)
03-12 17:21:55.112: E/AndroidRuntime(2031):     at android.app.Instrumentation.newActivity(Instrumentation.java:1061)
03-12 17:21:55.112: E/AndroidRuntime(2031):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2128)
03-12 17:21:55.112: E/AndroidRuntime(2031):     ... 11 more
03-12 17:22:02.132: E/AndroidRuntime(2050): FATAL EXCEPTION: main
03-12 17:22:02.132: E/AndroidRuntime(2050): java.lang.RuntimeException: Unable to     instantiate activity ComponentInfo{com.example.test/com.example.test.Example1}:  java.lang.NullPointerException
03-12 17:22:02.132: E/AndroidRuntime(2050):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2137)
03-12 17:22:02.132: E/AndroidRuntime(2050):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
03-12 17:22:02.132: E/AndroidRuntime(2050):     at android.app.ActivityThread.access$600(ActivityThread.java:141)
03-12 17:22:02.132: E/AndroidRuntime(2050):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
03-12 17:22:02.132: E/AndroidRuntime(2050):     at  android.os.Handler.dispatchMessage(Handler.java:99)
03-12 17:22:02.132: E/AndroidRuntime(2050):     at android.os.Looper.loop(Looper.java:137)
03-12 17:22:02.132: E/AndroidRuntime(2050):     at android.app.ActivityThread.main(ActivityThread.java:5103)
03-12 17:22:02.132: E/AndroidRuntime(2050):     at java.lang.reflect.Method.invokeNative(Native Method)
03-12 17:22:02.132: E/AndroidRuntime(2050):     at java.lang.reflect.Method.invoke(Method.java:525)
03-12 17:22:02.132: E/AndroidRuntime(2050):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
03-12 17:22:02.132: E/AndroidRuntime(2050):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
03-12 17:22:02.132: E/AndroidRuntime(2050):     at dalvik.system.NativeStart.main(Native Method)
03-12 17:22:02.132: E/AndroidRuntime(2050): Caused by: java.lang.NullPointerException
03-12 17:22:02.132: E/AndroidRuntime(2050):     at  android.app.Activity.findViewById(Activity.java:1853)
03-12 17:22:02.132: E/AndroidRuntime(2050):     at com.example.test.Example1.<init>(Example1.java:10)
03-12 17:22:02.132: E/AndroidRuntime(2050):     at java.lang.Class.newInstanceImpl(Native Method)
03-12 17:22:02.132: E/AndroidRuntime(2050):     at java.lang.Class.newInstance(Class.java:1130)
03-12 17:22:02.132: E/AndroidRuntime(2050):     at android.app.Instrumentation.newActivity(Instrumentation.java:1061)
03-12 17:22:02.132: E/AndroidRuntime(2050):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2128)
03-12 17:22:02.132: E/AndroidRuntime(2050):     ... 11 more

You are calling findViewById from your Activity constructor. You can't call findViewById until after the Activity view has been set by calling setContentView which should be done in onCreate . For example:

class MyActivity extends Activity {
    public MyActivity() {
        // Do not do anything with views here
    }

    public void onCreate(final Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.myLayout);
        // Now you can do stuff with your views
        final TextView title_view = (TextView)findViewById(R.id.titleView);
    }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM