Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Orientation change Crash Application

I am using fragments and when i change the orientation the application crash. Here is the log cat:

05-29 05:56:52.158: E/AndroidRuntime(1428): java.lang.RuntimeException: Unable to start activity     ComponentInfo{com.example.bajraregistertesteclipse/com.example.bajraregistertesteclipse.MainActivity}: android.view.InflateException: Binary XML file line #16: Error inflating class fragment
05-29 05:56:52.158: E/AndroidRuntime(1428):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
05-29 05:56:52.158: E/AndroidRuntime(1428):     at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3692)
05-29 05:56:52.158: E/AndroidRuntime(1428):     at android.app.ActivityThread.access$700(ActivityThread.java:141)
05-29 05:56:52.158: E/AndroidRuntime(1428):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1240)
05-29 05:56:52.158: E/AndroidRuntime(1428):     at android.os.Handler.dispatchMessage(Handler.java:99)
05-29 05:56:52.158: E/AndroidRuntime(1428):     at android.os.Looper.loop(Looper.java:137)
05-29 05:56:52.158: E/AndroidRuntime(1428):     at android.app.ActivityThread.main(ActivityThread.java:5039)
05-29 05:56:52.158: E/AndroidRuntime(1428):     at java.lang.reflect.Method.invokeNative(Native Method)
05-29 05:56:52.158: E/AndroidRuntime(1428):     at java.lang.reflect.Method.invoke(Method.java:511)
05-29 05:56:52.158: E/AndroidRuntime(1428):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
05-29 05:56:52.158: E/AndroidRuntime(1428):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
05-29 06:17:02.864: E/AndroidRuntime(1554): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.bajraregistertesteclipse/com.example.bajraregistertesteclipse.MainActivity}: android.view.InflateException: Binary XML file line #16: Error inflating class fragment
05-29 06:17:02.864: E/AndroidRuntime(1554):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
05-29 05:56:52.158: E/AndroidRuntime(1428): Caused by: java.lang.IllegalStateException: Fragment com.example.bajraregistertesteclipse.SecondFragment did not create a view.

Here is my First_Test_Fragment class

package com.example.bajraregistertesteclipse;

import android.app.Fragment;
import android.app.FragmentTransaction;
import android.content.res.Configuration;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.Toast;

public class First_Test_Fragment extends Fragment {

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    View view=inflater.inflate(R.layout.first_test_fragment,container,false);
    Button btnLogin=(Button)view.findViewById(R.id.btnLogin);

    btnLogin.setOnClickListener(new OnClickListener(){

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            FirstFragment firstFragment=new FirstFragment();
            FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
            fragmentTransaction.replace(R.id.detailFragment, firstFragment);
            fragmentTransaction.addToBackStack(null);
            fragmentTransaction.commit();

        }

    });
    Button btnSignUp=(Button)view.findViewById(R.id.btnSignUp);
    btnSignUp.setOnClickListener(new OnClickListener(){

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            SignUp signup=new SignUp();
            FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
            fragmentTransaction.replace(R.id.detailFragment, signup);
            fragmentTransaction.addToBackStack(null);
            fragmentTransaction.commit();



        }

    });




    return view;
}



}



}

Here is my FirstFragment Class

package com.example.bajraregistertesteclipse;

import android.app.Fragment;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;


public class FirstFragment extends Fragment {
LoginDataBaseAdapter loginDataBaseAdapter;
EditText loginTestUser,loginTestPassword;
String userName,password,confirmpassword;


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    // TODO Auto-generated method stub

       View view = inflater.inflate(R.layout.firstfragment, container, false);


      loginTestUser=(EditText)view.findViewById(R.id.editTextUserNameToLogin);
      loginTestPassword=    (EditText)view.findViewById(R.id.editTextPasswordToLogin);
       Button btnLogin = (Button) view.findViewById(R.id.buttonSignIn); 

        btnLogin.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
            //  Toast.makeText(getActivity(),"BttonLoginPressed",Toast.LENGTH_SHORT).show();

                // get The User name and Password
                 userName=loginTestUser.getText().toString();
                 password=loginTestPassword.getText().toString();

              // fetch the Password form database for respective user name
                    String storedPassword=loginDataBaseAdapter.getSinlgeEntry(userName);

                    // check if the Stored password matches with  Password entered by user
                    if(password.equals(storedPassword))
                    {
                        Toast.makeText(getActivity(), "Congrats: Login Successfull", Toast.LENGTH_LONG).show();

                        // Intent intent = new Intent(getActivity(), Admin_Page.class);
                       //     getActivity().startActivity(intent);

                        Intent open=new Intent("com.example.bajraregistertesteclipse.ADMIN_PAGE");

                        getActivity().startActivity(open);
                        // startActivity(open);

                    }
                    else
                    {
                        Toast.makeText(getActivity(), "User Name or Password does not match", Toast.LENGTH_LONG).show();
                    }

            }

        });

   return view;
}


@Override
public void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    loginDataBaseAdapter=new LoginDataBaseAdapter(getActivity());
     loginDataBaseAdapter=loginDataBaseAdapter.open();
}

}

My Mainfest.xml is :

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
 package="com.example.bajraregistertesteclipse"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="13"
    android:targetSdkVersion="16" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >

   <activity  
       android:name=".MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="com.example.bajraregistertesteclipse.MAINACTIVITY" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        </activity>
    <activity android:name=".SignUp"></activity>
     <activity android:name=".Admin_Page">

     </activity>

</application>

Now my problem is Application crash when orientation change and When click to the button new activity Admin_Page should be initiatied but application crash.

Thank YOu in Advance!!!

like image 258
Bhim Prasad Ale Avatar asked May 29 '13 06:05

Bhim Prasad Ale


People also ask

What to do if an application keeps crashing?

To fix Android apps that keep crashing: To do this, go to Settings and open Apps. Under Your apps, you'll see a list of the apps currently installed on your device. From the list, tap the app that keeps crashing and tap Force stop in the bottom right corner. Then try opening the app again.

What causes applications to crash?

This usually occurs when your Wi-Fi or cellular data is slow or unstable, causing apps to malfunction. Another reason for Android apps crashing can be a lack of storage space in your device. This can occur when you overload your device's internal memory with heavy apps.

What happens when orientation changes Android?

When you rotate your device and the screen changes orientation, Android usually destroys your application's existing Activities and Fragments and recreates them . Android does this so that your application can reload resources based on the new configuration.

How do you change orientation when retaining data?

Another most common solution to dealing with orientation changes by setting the android:configChanges flag on your Activity in AndroidManifest. xml. Using this attribute your Activities won't be recreated and all your views and data will still be there after orientation change.


1 Answers

<activity android:name=".SignUp"
android:configChanges="keyboardHidden|orientation|screenSize">

Add this line to all your activities to avoid crash with orientation changes. This will avoid the activity being loaded again and again on orientation changes.


For a little more information what you actually do with configChanges here the link to the Android documentation.

Lists configuration changes that the activity will handle itself. When a configuration change occurs at runtime, the activity is shut down and restarted by default, but declaring a configuration with this attribute will prevent the activity from being restarted. Instead, the activity remains running and its onConfigurationChanged() method is called.

Note: Using this attribute should be avoided and used only as a last resort. Please read Handling Runtime Changes for more information about how to properly handle a restart due to a configuration change.

And how to handle configuration changes you can find here.

like image 103
Mahesh Avatar answered Nov 11 '22 10:11

Mahesh