Thursday, October 31, 2013

Inflate layout inside LinearLayout [android help]


Inflate layout inside LinearLayout



In the app that I'm developing, I have a Menu with icons that is on the right and left edges of the screen, and it mantains there in all the app's activities.


What I've done is first create the "MenuView" class activity where are defined all the menu's icons and their onClickListeners. Then the layout for this activity. In the layout I stablished 2 linearlayout's wich are each one on the border's of the screen (These refers to the menu) and a LinearLayout with the blank space inside the columns, where the other activities must go.


MenuViewActivity.java



public class MenuViewActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.menu_view);
...

((ImageView)this.findViewById(R.id.navButton)).setOnClickListener(launch_nav);

final OnClickListener launch_nav = new OnClickListener() {
@Override
public void onClick(View v) {
getBaseContext().startActivity(new Intent(getBaseContext(), Navigation.class));
}
};
...


menu_view.xml



xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.example.MenuViewActivity" >



layout="@layout/custom_tittlebar" >




android:id="@+id/lefthandmenu"
android:layout_width="85dip"
android:layout_height="match_parent"
android:layout_below="@id/title"
android:layout_alignParentLeft="true"
android:orientation="vertical"
android:background="@drawable/border_cut" >

... />
...


android:id="@+id/righthandmenu"
android:layout_width="85dip"
android:layout_height="match_parent"
android:layout_below="@id/title"
android:layout_alignParentRight="true"
android:orientation="vertical"
android:background="@drawable/border_cut" >

... />
...



android:id="@+id/activitycontent"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_toLeftOf="@id/righthandmenu"
android:layout_toRightOf="@id/lefthandmenu"
android:layout_below="@id/title"
android:orientation="vertical" >



So, what I must do now is to tell the program that other activities must go inside this last layout. For this, I do this in for example the Main class. I extend the activity to MenuViewActivity and the I inflate the layout.


MainClass.java



public class MainClass extends MenuViewActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
super.onCreate(savedInstanceState);


LinearLayout inside_menu_view = (LinearLayout)findViewById(R.id.activitycontent);
View this_layout = getLayoutInflater().inflate(R.layout.main, inside_menu_view);
inside_menu_view.addView(this_layout);


But I'm getting an error on the logcat:



10-31 09:14:05.314: D/AndroidRuntime(1703): Shutting down VM
10-31 09:14:05.314: W/dalvikvm(1703): threadid=1: thread exiting with uncaught exception (group=0x40015560)
10-31 09:14:05.324: E/AndroidRuntime(1703): FATAL EXCEPTION: main
10-31 09:14:05.324: E/AndroidRuntime(1703): **java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example/com.example.MainClass}: android.view.InflateException: Binary XML file line #12: Error inflating class com.example.MenuViewActivity**
10-31 09:14:05.324: E/AndroidRuntime(1703): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
10-31 09:14:05.324: E/AndroidRuntime(1703): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
10-31 09:14:05.324: E/AndroidRuntime(1703): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
10-31 09:14:05.324: E/AndroidRuntime(1703): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
10-31 09:14:05.324: E/AndroidRuntime(1703): at android.os.Handler.dispatchMessage(Handler.java:99)
10-31 09:14:05.324: E/AndroidRuntime(1703): at android.os.Looper.loop(Looper.java:130)
10-31 09:14:05.324: E/AndroidRuntime(1703): at android.app.ActivityThread.main(ActivityThread.java:3683)
10-31 09:14:05.324: E/AndroidRuntime(1703): at java.lang.reflect.Method.invokeNative(Native Method)
10-31 09:14:05.324: E/AndroidRuntime(1703): at java.lang.reflect.Method.invoke(Method.java:507)
10-31 09:14:05.324: E/AndroidRuntime(1703): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
10-31 09:14:05.324: E/AndroidRuntime(1703): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
10-31 09:14:05.324: E/AndroidRuntime(1703): at dalvik.system.NativeStart.main(Native Method)
10-31 09:14:05.324: E/AndroidRuntime(1703): **Caused by: android.view.InflateException: Binary XML file line #12: Error inflating class com.example.MenuViewActivity**
10-31 09:14:05.324: E/AndroidRuntime(1703): at android.view.LayoutInflater.createView(LayoutInflater.java:508)
10-31 09:14:05.324: E/AndroidRuntime(1703): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:570)
10-31 09:14:05.324: E/AndroidRuntime(1703): at android.view.LayoutInflater.rInflate(LayoutInflater.java:623)
10-31 09:14:05.324: E/AndroidRuntime(1703): at android.view.LayoutInflater.inflate(LayoutInflater.java:408)
10-31 09:14:05.324: E/AndroidRuntime(1703): at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
10-31 09:14:05.324: E/AndroidRuntime(1703): at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
10-31 09:14:05.324: E/AndroidRuntime(1703): at com.example.MainClass.onCreate(MainClass.java:67)
10-31 09:14:05.324: E/AndroidRuntime(1703): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
10-31 09:14:05.324: E/AndroidRuntime(1703): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
10-31 09:14:05.324: E/AndroidRuntime(1703): ... 11 more
10-31 09:14:05.324: E/AndroidRuntime(1703): **Caused by: java.lang.NoSuchMethodException: MenuViewActivity(Context,AttributeSet)**
10-31 09:14:05.324: E/AndroidRuntime(1703): at java.lang.Class.getMatchingConstructor(Class.java:643)
10-31 09:14:05.324: E/AndroidRuntime(1703): at java.lang.Class.getConstructor(Class.java:472)
10-31 09:14:05.324: E/AndroidRuntime(1703): at android.view.LayoutInflater.createView(LayoutInflater.java:480)
10-31 09:14:05.324: E/AndroidRuntime(1703): ... 19 more


UPDATE - After modofications still not working, this is the LogCat



10-31 09:35:17.521: E/AndroidRuntime(1676): FATAL EXCEPTION: main
10-31 09:35:17.521: E/AndroidRuntime(1676): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example/com.example.MainClass}: android.view.InflateException: Binary XML file line #12: Error inflating class com.example.MenuViewActivity
10-31 09:35:17.521: E/AndroidRuntime(1676): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
10-31 09:35:17.521: E/AndroidRuntime(1676): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
10-31 09:35:17.521: E/AndroidRuntime(1676): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
10-31 09:35:17.521: E/AndroidRuntime(1676): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
10-31 09:35:17.521: E/AndroidRuntime(1676): at android.os.Handler.dispatchMessage(Handler.java:99)
10-31 09:35:17.521: E/AndroidRuntime(1676): at android.os.Looper.loop(Looper.java:130)
10-31 09:35:17.521: E/AndroidRuntime(1676): at android.app.ActivityThread.main(ActivityThread.java:3683)
10-31 09:35:17.521: E/AndroidRuntime(1676): at java.lang.reflect.Method.invokeNative(Native Method)
10-31 09:35:17.521: E/AndroidRuntime(1676): at java.lang.reflect.Method.invoke(Method.java:507)
10-31 09:35:17.521: E/AndroidRuntime(1676): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
10-31 09:35:17.521: E/AndroidRuntime(1676): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
10-31 09:35:17.521: E/AndroidRuntime(1676): at dalvik.system.NativeStart.main(Native Method)
10-31 09:35:17.521: E/AndroidRuntime(1676): Caused by: android.view.InflateException: Binary XML file line #12: Error inflating class com.example.MenuViewActivity
10-31 09:35:17.521: E/AndroidRuntime(1676): at android.view.LayoutInflater.createView(LayoutInflater.java:518)
10-31 09:35:17.521: E/AndroidRuntime(1676): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:570)
10-31 09:35:17.521: E/AndroidRuntime(1676): at android.view.LayoutInflater.rInflate(LayoutInflater.java:623)
10-31 09:35:17.521: E/AndroidRuntime(1676): at android.view.LayoutInflater.inflate(LayoutInflater.java:408)
10-31 09:35:17.521: E/AndroidRuntime(1676): at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
10-31 09:35:17.521: E/AndroidRuntime(1676): at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
10-31 09:35:17.521: E/AndroidRuntime(1676): at com.masermic.medialauncher.LauncherActivity.onCreate(LauncherActivity.java:67)
10-31 09:35:17.521: E/AndroidRuntime(1676): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
10-31 09:35:17.521: E/AndroidRuntime(1676): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
10-31 09:35:17.521: E/AndroidRuntime(1676): ... 11 more
10-31 09:35:17.521: E/AndroidRuntime(1676): Caused by: java.lang.reflect.InvocationTargetException
10-31 09:35:17.521: E/AndroidRuntime(1676): at java.lang.reflect.Constructor.constructNative(Native Method)
10-31 09:35:17.521: E/AndroidRuntime(1676): at java.lang.reflect.Constructor.newInstance(Constructor.java:415)
10-31 09:35:17.521: E/AndroidRuntime(1676): at android.view.LayoutInflater.createView(LayoutInflater.java:505)
10-31 09:35:17.521: E/AndroidRuntime(1676): ... 19 more
10-31 09:35:17.521: E/AndroidRuntime(1676): Caused by: java.lang.NullPointerException
10-31 09:35:17.521: E/AndroidRuntime(1676): at com.mexample.MenuViewActivity.(MenuViewActivity.java:55)
10-31 09:35:17.521: E/AndroidRuntime(1676): ... 22 more


Read more

stackoverflow.comm



No comments:

Post a Comment

Google Voice on T-Mobile? [General]

Google Voice on T-Mobile? So I recently switched from a GNex on Verizon to a Moto X DE on T-Mobile. I had always used Google Voice for my v...