简体   繁体   中英

Use my layout resource file in MainActivity

I'm following the tutorial "Apps entwickeln mit Android Studio 5" which led me to creating my own Layout resource file via New > Layout resource file and then I give it a file name scroll_design and a root element ScrollView .

I create my layout how I want to in the XML editor / Design editor with the widgets I like.

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="My custom Layout File"
        android:id="@+id/textView2"
        android:layout_gravity="center_horizontal"
        android:layout_margin="32sp" />
</LinearLayout>

Then the tutorial tells me to go to the MainActivity and change the layout in the code, but when I do this: change setContentView(R.layout.activity_main); into setContentView(R.layout.scroll_design); and start my emulator with API21 it will crash my application with "has stopped working" and a few error lines until I change back my layout to activity_main.xml

So how can I connect my new created xml layout to my project correclty then?

Logcat:

11-08 20:31:25.187 25776-25776/de.myworkplace.layouts2 E/AndroidRuntime: FATAL EXCEPTION: main
11-08 20:31:25.187 25776-25776/de.myworkplace.layouts2 E/AndroidRuntime: Process: de.myworkplace.layouts2, PID: 25776
11-08 20:31:25.187 25776-25776/de.myworkplace.layouts2 E/AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{de.myworkplace.layouts2/de.myworkplace.layouts2.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.CharSequence android.support.v7.widget.Toolbar.getTitle()' on a null object reference
11-08 20:31:25.187 25776-25776/de.myworkplace.layouts2 E/AndroidRuntime:     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298)
11-08 20:31:25.187 25776-25776/de.myworkplace.layouts2 E/AndroidRuntime:     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
11-08 20:31:25.187 25776-25776/de.myworkplace.layouts2 E/AndroidRuntime:     at android.app.ActivityThread.access$800(ActivityThread.java:144)
11-08 20:31:25.187 25776-25776/de.myworkplace.layouts2 E/AndroidRuntime:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
11-08 20:31:25.187 25776-25776/de.myworkplace.layouts2 E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:102)
11-08 20:31:25.187 25776-25776/de.myworkplace.layouts2 E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:135)
11-08 20:31:25.187 25776-25776/de.myworkplace.layouts2 E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:5221)
11-08 20:31:25.187 25776-25776/de.myworkplace.layouts2 E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Native Method)
11-08 20:31:25.187 25776-25776/de.myworkplace.layouts2 E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Method.java:372)
11-08 20:31:25.187 25776-25776/de.myworkplace.layouts2 E/AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
11-08 20:31:25.187 25776-25776/de.myworkplace.layouts2 E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
11-08 20:31:25.187 25776-25776/de.myworkplace.layouts2 E/AndroidRuntime:  Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.CharSequence android.support.v7.widget.Toolbar.getTitle()' on a null object reference
11-08 20:31:25.187 25776-25776/de.myworkplace.layouts2 E/AndroidRuntime:     at android.support.v7.internal.widget.ToolbarWidgetWrapper.<init>(ToolbarWidgetWrapper.java:100)
11-08 20:31:25.187 25776-25776/de.myworkplace.layouts2 E/AndroidRuntime:     at android.support.v7.internal.widget.ToolbarWidgetWrapper.<init>(ToolbarWidgetWrapper.java:93)
11-08 20:31:25.187 25776-25776/de.myworkplace.layouts2 E/AndroidRuntime:     at android.support.v7.internal.app.ToolbarActionBar.<init>(ToolbarActionBar.java:78)
11-08 20:31:25.187 25776-25776/de.myworkplace.layouts2 E/AndroidRuntime:     at android.support.v7.app.AppCompatDelegateImplV7.setSupportActionBar(AppCompatDelegateImplV7.java:206)
11-08 20:31:25.187 25776-25776/de.myworkplace.layouts2 E/AndroidRuntime:     at android.support.v7.app.AppCompatActivity.setSupportActionBar(AppCompatActivity.java:99)
11-08 20:31:25.187 25776-25776/de.myworkplace.layouts2 E/AndroidRuntime:     at de.myworkplace.layouts2.MainActivity.onCreate(MainActivity.java:19)
11-08 20:31:25.187 25776-25776/de.myworkplace.layouts2 E/AndroidRuntime:     at android.app.Activity.performCreate(Activity.java:5937)
11-08 20:31:25.187 25776-25776/de.myworkplace.layouts2 E/AndroidRuntime:     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
11-08 20:31:25.187 25776-25776/de.myworkplace.layouts2 E/AndroidRuntime:     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)
11-08 20:31:25.187 25776-25776/de.myworkplace.layouts2 E/AndroidRuntime:     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) 
11-08 20:31:25.187 25776-25776/de.myworkplace.layouts2 E/AndroidRuntime:     at android.app.ActivityThread.access$800(ActivityThread.java:144) 
11-08 20:31:25.187 25776-25776/de.myworkplace.layouts2 E/AndroidRuntime:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) 
11-08 20:31:25.187 25776-25776/de.myworkplace.layouts2 E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:102) 
11-08 20:31:25.187 25776-25776/de.myworkplace.layouts2 E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:135) 
11-08 20:31:25.187 25776-25776/de.myworkplace.layouts2 E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:5221) 
11-08 20:31:25.187 25776-25776/de.myworkplace.layouts2 E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Native Method) 
11-08 20:31:25.187 25776-25776/de.myworkplace.layouts2 E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Method.java:372) 
11-08 20:31:25.187 25776-25776/de.myworkplace.layouts2 E/AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899) 
11-08 20:31:25.187 25776-25776/de.myworkplace.layouts2 E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 
11-08 20:31:25.191 1230-1600/system_process W/ActivityManager:   Force finishing activity de.myworkplace.layouts2/.MainActivity

在此处输入图片说明

The origin of your problem is in your Java file.

You are referencing an ActionBar that existed in activity_main but does not in scroll_design .
Check your #onCreate() method, a getActionBar() or getSupportActionBar() should be there.

Your exception message is:

Attempt to invoke virtual method 'java.lang.CharSequence android.support.v7.widget.Toolbar.getTitle()' on a null object reference

That's a NullPointerException on a reference to the ActionBar .

-Did you added .xml extention to scroll_design file? -Try to put your scroll_design.xml file in res/layout folder

you have two options to have what you made in main activity work with your layout in scroll design or vice versa.

A.) copy and paste the code from MainActivity.java into DesignScroll.java (its best to select create new activity to create the xml and java already setup with each other) then it will allow you to change the setContentView(); to setContentView(R.layout.scroll_design); so you have a java and xml working for scroll design

B.) create your layout in activity_main.xml with the code in MainActivity.java, then go to scroll_design.xml and add <include layout="@layout/activity_main"/> which will make everything in your main activity layout show up in your scroll design layout

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