Note that there are some explanatory texts on larger screens.

plurals
  1. POAndroid Fragment inside RelativeLayout crashes app
    primarykey
    data
    text
    <p>I am transitioning an app over to android and having some trouble with fragments.</p> <p>When I have no <code>RelativeLayout</code> and just <code>Fragment</code> it works fine, however with the introduction of the layout (rel or linear) it crashes. I am trying to add some buttons to the top of the map, preferably overlaid rather than in its own space.</p> <p>event_layout.xml:</p> <pre><code>&lt;RelativeLayout android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/relativeLayout"&gt; &lt;fragment android:id="@+id/the_map" android:layout_width="match_parent" android:layout_height="match_parent" class="com.google.android.gms.maps.SupportMapFragment"/&gt; &lt;Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:text="Start service"/&gt; &lt;/RelativeLayout&gt; </code></pre> <p>MainActivity.java:</p> <pre><code>public class MainActivity extends FragmentActivity { // Fragment TabHost as mTabHost private FragmentTabHost mTabHost; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // set up the tabhost mTabHost = (FragmentTabHost)findViewById(android.R.id.tabhost); mTabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent); mTabHost.addTab(mTabHost.newTabSpec("event").setIndicator("Event Locations", getResources().getDrawable(R.drawable.ic_event_tab)), EventFragment.class, null); mTabHost.addTab(mTabHost.newTabSpec("itin").setIndicator("Itinerary", getResources().getDrawable(R.drawable.ic_itin_tab)), ItineraryFragment.class, null); mTabHost.addTab(mTabHost.newTabSpec("info").setIndicator("Kendal Info", getResources().getDrawable(R.drawable.ic_info_tab)), KendalInfoFragment.class, null); mTabHost.getTabWidget().setBackgroundColor(Color.WHITE); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } } </code></pre> <p>EventFragment.java:</p> <pre><code>public class EventFragment extends FragmentActivity { private int userIcon, foodIcon, drinkIcon, shopIcon, otherIcon; private GoogleMap theMap; private LocationManager locMan; private Marker userMarker; public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View V = inflater.inflate(R.layout.event_layout, container, false); // now run code below the inflate if(theMap==null){ //map not instantiated yet theMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.the_map)).getMap(); } //theMap.setMapType(GoogleMap.MAP_TYPE_HYBRID); //updatePlaces(); theMap.setMyLocationEnabled(true); theMap.moveCamera( CameraUpdateFactory.newLatLngZoom(new LatLng(54.328337, -2.743149) ,14) ); JSONArray arrayResultFromURL; // store the result of the data into the variable arrayResultFromURL = getJSONfromURL("http://www.websitewebsitestr.org/json.php?f=all&amp;type=dateAndTime"); try{ //Log.d("array_len", String.format("%d", arrayResultFromURL.length())); for(int i=0;i&lt;arrayResultFromURL.length();i++){ JSONObject json_data = arrayResultFromURL.getJSONObject(i); // assign attributes from the JSON string to local variables String id =json_data.getString("id"); String title =json_data.getString("title"); String strap; // define this for the try catch // this try catch is in case the client does not // put a strap in, title is mandatory try{ strap =json_data.getString("strap"); }catch(Exception e){ strap = ""; } Double lat = (double) 0; Double lon = (double) 0; // if the lat and long have not been entered then set them to 0 // otherwise an exception is thrown, and if it is lat and long will // become 0, putting them down south. try{ lat = (double) json_data.getDouble("lat"); }catch(Exception e){ lat = (double) 0; } try{ lon = (double) json_data.getDouble("long"); }catch(Exception e){ lon = (double) 0; } theMap.addMarker(new MarkerOptions() .position(new LatLng(lat, lon)) .title(title) .snippet(strap)); } }catch (Exception e){ Log.e("log_tag", "error in array: " + e.toString()); } //Log.d("log_tag", "result: " + res); //Log.d("log_tag", "point debug!"); //Log.d("myApp", res.toString()); userIcon = R.drawable.common_signin_btn_icon_dark; /*foodIcon = R.drawable.red_point; drinkIcon = R.drawable.blue_point; shopIcon = R.drawable.green_point; otherIcon = R.drawable.purple_point;*/ //return V; return inflater.inflate(R.layout.event_layout, container, false); } public static JSONArray getJSONfromURL(String url){ //initialize InputStream is = null; String result = ""; JSONArray jArray = null; //http post try { HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost(url); HttpResponse response = httpclient.execute(httppost); HttpEntity entity = response.getEntity(); is = entity.getContent(); } catch (Exception e) { Log.e("log_tag", "Error in http connection "+e.toString()); } //convert response to string try { BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8); StringBuilder sb = new StringBuilder(); String line = null; while ((line = reader.readLine()) != null) { sb.append(line); } is.close(); result=sb.toString(); } catch (Exception e) { Log.e("log_tag", "Error converting result "+e.toString()); } //try parse the string to a JSON object try { //Log.d("log_tag", "jresult: " + result + "finish"); jArray = new JSONArray(result); //Log.e("log_tag", "result: " + jArray.toString()); } catch (JSONException e) { Log.e("log_tag", "Error parsing data "+e.toString()); } return jArray; } public boolean onMarkerClick(Marker marker) { Log.d("Debug_log", "clicked!!"); return true; } } </code></pre> <p>It produces this error:</p> <pre><code> 07-01 11:00:29.428: E/AndroidRuntime(24381): FATAL EXCEPTION: main 07-01 11:00:29.428: E/AndroidRuntime(24381): java.lang.ClassCastException: co.uk.thewebsite.websitewebsitefest.EventFragment 07-01 11:00:29.428: E/AndroidRuntime(24381): at android.support.v4.app.Fragment.instantiate(Fragment.java:394) 07-01 11:00:29.428: E/AndroidRuntime(24381): at android.support.v4.app.FragmentTabHost.doTabChanged(FragmentTabHost.java:339) 07-01 11:00:29.428: E/AndroidRuntime(24381): at android.support.v4.app.FragmentTabHost.onAttachedToWindow(FragmentTabHost.java:276) 07-01 11:00:29.428: E/AndroidRuntime(24381): at android.view.View.dispatchAttachedToWindow(View.java:6203) 07-01 11:00:29.428: E/AndroidRuntime(24381): at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:1174) 07-01 11:00:29.428: E/AndroidRuntime(24381): at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:1179) 07-01 11:00:29.428: E/AndroidRuntime(24381): at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:1179) 07-01 11:00:29.428: E/AndroidRuntime(24381): at android.view.ViewGroup.dispatchAttachedToWindow(ViewGroup.java:1179) 07-01 11:00:29.428: E/AndroidRuntime(24381): at android.view.ViewRoot.performTraversals(ViewRoot.java:797) 07-01 11:00:29.428: E/AndroidRuntime(24381): at android.view.ViewRoot.handleMessage(ViewRoot.java:1921) 07-01 11:00:29.428: E/AndroidRuntime(24381): at android.os.Handler.dispatchMessage(Handler.java:99) 07-01 11:00:29.428: E/AndroidRuntime(24381): at android.os.Looper.loop(Looper.java:143) 07-01 11:00:29.428: E/AndroidRuntime(24381): at android.app.ActivityThread.main(ActivityThread.java:4196) 07-01 11:00:29.428: E/AndroidRuntime(24381): at java.lang.reflect.Method.invokeNative(Native Method) 07-01 11:00:29.428: E/AndroidRuntime(24381): at java.lang.reflect.Method.invoke(Method.java:507) 07-01 11:00:29.428: E/AndroidRuntime(24381): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 07-01 11:00:29.428: E/AndroidRuntime(24381): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 07-01 11:00:29.428: E/AndroidRuntime(24381): at dalvik.system.NativeStart.main(Native Method) </code></pre> <p>I have tried using frames as suggested on other stackoverflow posts, however the app either crashed or bugged out and I was unable to resolve it. I have learned a lot over the past week in android and I am excited to learn much more in the future!</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload