3

I have been working on this particular problem since the beginning of the week. I have read blogs and suggested answers on stack overflow. I have tried different solutions and even used some of the accepted answers from here but my app still keeps crashing. I also tried the mapview and it did not work. I need some help solving this. I have implemented a map before and I did not have any problems but that was in an activity. I am facing issues with implementing in the fragment and the app always crashes at view = inflater.inflate(R.layout.fragment_serv__base_data, container, false); init();

Below is my manifest file:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.application.sweetiean.stlmaintenance" >

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_INTENAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!--
     The following two permissions are not required to use
     Google Maps Android API v2, but are recommended.
-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="com.application.sweetiean.permission.MAPS_RECEIVE" />

<uses-feature
    android:glEsVersion="0x00020000"
    android:required="true" />

<meta-data
    android:name="com.google.android.gms.version"
    android:value="@integer/google_play_services_version" />
<meta-data
    android:name="com.google.android.maps.v2.API_KEY"
    android:value="AIzaSyA5ULk7TurdcL5PqVOjJ1ZDf9wiZJIwgZc" />

<permission
    android:name="com.application.sweetiean.permission.MAPS_RECEIVE"
    android:protectionLevel="signature" />

<application
    android:allowBackup="true"
    android:icon="@mipmap/supertechlogo"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".SplashActivity"
        android:label="@string/app_name"
        android:theme="@style/AppTheme.NoActionBar" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".MainActivity"
        android:label="@string/title_activity_main"
        android:screenOrientation="portrait"
        android:theme="@style/AppTheme.NoActionBar" >
    </activity>
    <activity
        android:name=".MaintenanceActivity"
        android:screenOrientation="portrait"
        android:theme="@style/AppTheme.NoActionBar" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.application.sweetiean.stlmaintenance.MainActivity" />
    </activity>
    <activity
        android:name="com.application.sweetiean.stlservicing.ServicingActivity"
        android:screenOrientation="portrait"
        android:theme="@style/AppTheme.NoActionBar" >
        <meta-data
            android:name="android.support.PARENT_ACTIVITY"
            android:value="com.application.sweetiean.stlmaintenance.MainActivity" />
    </activity>
    <activity android:name=".DisplayOverviewActivity" >
    </activity>
    <activity
        android:name="com.application.sweetiean.stlservicing.STLSignatureActivity"
        android:label="STL Signature">
    </activity>
    <activity android:name="com.application.sweetiean.stlservicing.ClientSignatureActivity"
        android:label="Client Signature">
    </activity>
</application>

Here is the xml:

...
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="500dp"
        android:orientation="vertical"
        android:layout_marginBottom="10dp">

        <fragment
            android:id="@+id/map"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            class="com.google.android.gms.maps.SupportMapFragment" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_marginBottom="10dp">

        <Button
            android:id="@+id/getLocationButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/getlocation"
            android:background="@drawable/blue_button"
            style="@style/button_text_small"/>

        <TextView
            android:id="@+id/locationTextView"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:textSize="12sp"/>

    </LinearLayout>
...

Below is the fragment.java:

public class Serv_BaseDataFragment extends Fragment {

View view;
EditText sysaid, customer, siteId, address;
TextView locationCoordinates;
Spinner taskSpinner, regionSpinner;
Button sign_STL, sign_client, location;
GoogleMap googleMap;


public Serv_BaseDataFragment() {
    // Required empty public constructor
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment

    view = inflater.inflate(R.layout.fragment_serv__base_data, container, false);
    init();
    return view;

}


public void init(){

    googleMap = ((SupportMapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();

    sysaid = (EditText)view.findViewById(R.id.sysaidIdEditText);
    customer = (EditText)view.findViewById(R.id.customerEditText);
    siteId = (EditText)view.findViewById(R.id.siteIdEditText);
    address = (EditText)view.findViewById(R.id.addressEditText);
    locationCoordinates = (TextView)view.findViewById(R.id.locationTextView);

    taskSpinner = (Spinner)view.findViewById(R.id.taskTypeSpinner);
    ArrayAdapter<CharSequence> taskAdapter = ArrayAdapter.createFromResource(this.getActivity(), R.array.taskTypeArray, android.R.layout.simple_spinner_item);
    taskAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    taskSpinner.setAdapter(taskAdapter);

    regionSpinner = (Spinner)view.findViewById(R.id.regionSpinner);
    ArrayAdapter<CharSequence> regionAdapter = ArrayAdapter.createFromResource(this.getActivity(), R.array.regionArray, android.R.layout.simple_spinner_item);
    regionAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    regionSpinner.setAdapter(regionAdapter);

    sign_client = (Button)view.findViewById(R.id.clientSignatureButton);
    sign_client.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(getActivity(), ClientSignatureActivity.class);
            startActivityForResult(intent, 1);
        }
    });

    sign_STL = (Button)view.findViewById(R.id.STLSignatureButton);
    sign_STL.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(getActivity(), STLSignatureActivity.class);
            startActivityForResult(intent, 1);
        }
    });

    location = (Button)view.findViewById(R.id.getLocationButton);
    location.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

        }
    });


}

}

and finally the error log:

11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime: FATAL EXCEPTION: main
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime: Process: com.application.sweetiean.stlmaintenance, PID: 5398
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime: android.view.InflateException: Binary XML file line #157: Error inflating class fragment
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:719)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.view.LayoutInflater.rInflate(LayoutInflater.java:761)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.view.LayoutInflater.rInflate(LayoutInflater.java:769)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.view.LayoutInflater.rInflate(LayoutInflater.java:769)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.view.LayoutInflater.inflate(LayoutInflater.java:498)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.view.LayoutInflater.inflate(LayoutInflater.java:398)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at com.application.sweetiean.stlservicing.Serv_BaseDataFragment.onCreateView(Serv_BaseDataFragment.java:50)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.support.v4.app.Fragment.performCreateView(Fragment.java:1965)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1078)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1259)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1624)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.support.v4.app.FragmentManagerImpl.executePendingTransactions(FragmentManager.java:570)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.support.v4.app.FragmentPagerAdapter.finishUpdate(FragmentPagerAdapter.java:141)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.support.v4.view.ViewPager.populate(ViewPager.java:1106)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.support.v4.view.ViewPager.populate(ViewPager.java:952)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.support.v4.view.ViewPager.onMeasure(ViewPager.java:1474)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.view.View.measure(View.java:17327)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5363)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.support.design.widget.CoordinatorLayout.onMeasureChild(CoordinatorLayout.java:610)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.support.design.widget.CoordinatorLayout.onMeasure(CoordinatorLayout.java:677)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.view.View.measure(View.java:17327)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5363)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.support.v7.internal.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:135)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.view.View.measure(View.java:17327)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5363)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1410)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.widget.LinearLayout.measureVertical(LinearLayout.java:695)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.view.View.measure(View.java:17327)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5363)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.view.View.measure(View.java:17327)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5363)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1410)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.widget.LinearLayout.measureVertical(LinearLayout.java:695)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.widget.LinearLayout.onMeasure(LinearLayout.java:588)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.view.View.measure(View.java:17327)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:5363)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2548)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.view.View.measure(View.java:17327)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2277)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1391)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1590)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1249)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6529)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.view.Choreographer$CallbackRecord.run(Choreographer.java:812)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.view.Choreographer.doCallbacks(Choreographer.java:612)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.view.Choreographer.doFrame(Choreographer.java:582)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:798)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.os.Handler.handleCallback(Handler.java:733)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:95)
11-13 12:04:26.099 5398-5398/com.application.sweetiean.stlmaintenance E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:146)
Sweetie Anang
  • 332
  • 1
  • 3
  • 15
  • Use getSupportFragmentManager instead of getFragmentManager – Ramesh Nov 13 '15 at 12:33
  • did you try `getChildFragmentManager()` ,This is because you mention nested fragments. – Droidekas Nov 13 '15 at 12:34
  • @Droidekas yes I did and it crashed all the same. – Sweetie Anang Nov 13 '15 at 12:36
  • check here : http://stackoverflow.com/questions/20583392/nesting-google-map-fragment-inside-custom-fragment – Droidekas Nov 13 '15 at 12:38
  • @Ramesh cannot resolve method – Sweetie Anang Nov 13 '15 at 12:39
  • If you are using latest google play service library and a mapview this link may help you. http://stackoverflow.com/questions/32601219/trying-to-put-a-map-in-a-fragment-activity#32601861 – Emil Nov 13 '15 at 12:41
  • @SweetieAnang Your activity must extends with FragmentActivity after that use getActivity().getSupportFragmentManager in your fragment – Ramesh Nov 13 '15 at 12:41
  • @Ramesh It still crashes with inflateexception. And its impossible to extend FragmentActivity because it is a fragment from a view pager not an activity. so it gives me errors – Sweetie Anang Nov 13 '15 at 12:46
  • @SweetieAnang can you post the code where you are using viewpager – Ramesh Nov 13 '15 at 12:49
  • @Boss your tutorial was an eye opener. I just realised why I have been having issues since Monday. It turns out my map key meta-data element was out of my `` element. I cant believe i spent all this time trying to fix an obvious mistake. Thank you everyone for trying to help me. @Ramesh @Droidekas I learnt some new things from all of you. – Sweetie Anang Nov 14 '15 at 12:44

1 Answers1

0

Make sure the <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="AIzaSyA5ULk7TurdcL5PqVOjJ1ZDf9wiZJIwgZc" /> is inside of the <application> element. If you decide to use a mapview you can follow Boss's answer at this link. Also there are other great suggestions in the comments under the question.

Let me add that when I was testing the mapview example mContext = getActivity();did not work for me so I commented it out. Moreover there was no use of mContextin the code block.

Community
  • 1
  • 1
Sweetie Anang
  • 332
  • 1
  • 3
  • 15