How do i go from one activity to another activity?

Go To StackoverFlow.com

0

I have a Main class and a HelloWorld class. I have created a button in Main.xml when i click this button it should start HelloWorld activity. When i execute it, It force closes when i click the button. Log cat also given below.

Main.java

import java.io.IOException;
import java.util.List;
import java.util.Locale;
import com.google.android.maps.GeoPoint;
import com.google.android.maps.MapActivity;
import com.google.android.maps.MapView;
import com.google.android.maps.MyLocationOverlay;
import com.google.android.maps.Overlay;
import com.google.android.maps.OverlayItem;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.drawable.Drawable;
import android.location.Address;
import android.location.Criteria;
import android.location.Geocoder;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class Main extends MapActivity implements LocationListener {
/** Called when the activity is first created. */
MapView map;
long start;
long stop;
int x, y;
GeoPoint touchedPoint;
Drawable d;
List<Overlay> overlayList;
LocationManager lm;
String towers;
int lat ;
   int longi; 





@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);



    Button button = (Button)findViewById(R.id.button1);
    button.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {
            // TODO Auto-generated method stub
            //Toast.makeText(Main.this, "you clicked on button!",     Toast.LENGTH_LONG).show();
            Intent intent = new Intent(Main.this, HelloWorld.class);
    startActivity(intent)
        }
    });

    map = (MapView)findViewById(R.id.mv);
    map.setBuiltInZoomControls(true);

    Touchy t = new Touchy();
    overlayList = map.getOverlays();
    overlayList.add(t);

    d = getResources().getDrawable(R.drawable.pinn);

    //Placing pintpoint
    lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    Criteria crit = new Criteria();

    towers = lm.getBestProvider(crit, false);
    Location location = lm.getLastKnownLocation(towers);

    if (location != null){
        lat = (int) (location.getLatitude() *1E6);
        longi= (int) (location.getLongitude() *1E6);



        GeoPoint ourLocation = new GeoPoint(lat,longi);
        OverlayItem overlayItem = new OverlayItem(ourLocation, "Hi!!", "2nd");
        CustomPinPoint custom = new CustomPinPoint(d, Main.this);   
        custom.insertPinpoint(overlayItem);
        overlayList.add(custom);
    }else{
        Toast.makeText(Main.this, "Couldnt get provider", Toast.LENGTH_SHORT).show();
    }





}

@Override
protected void onPause() {
    // TODO Auto-generated method stub

    super.onPause();
    lm.removeUpdates(this);
}


@Override
protected void onResume() {
    // TODO Auto-generated method stub

    super.onResume();
    lm.requestLocationUpdates(towers, 500, 1, this );
}


    @Override
protected boolean isRouteDisplayed() {
    // TODO Auto-generated method stub
    return false;
}



class Touchy extends Overlay{
    public boolean onTouchEvent(MotionEvent e, MapView m){
    if (e.getAction() == MotionEvent.ACTION_DOWN){
        start = e.getEventTime();

    }
    if (e.getAction() == MotionEvent.ACTION_UP){
        stop = e.getEventTime();
        x = (int) e.getX();
        y = (int) e.getY();
        touchedPoint = map.getProjection().fromPixels(x, y);

    }
    if (stop - start > 1500){
        AlertDialog alert = new AlertDialog.Builder(Main.this).create();
        alert.setTitle("Pick Option");


        alert.setButton("Hello", new DialogInterface.OnClickListener() {

            public void onClick(DialogInterface dialog, int which) {
                // TODO Auto-generated method stub

                OverlayItem overlayItem = new OverlayItem(touchedPoint, "Hi!!", "2nd");
                CustomPinPoint custom = new CustomPinPoint(d, Main.this);   
                custom.insertPinpoint(overlayItem);
                overlayList.add(custom);



        }
        });
        alert.setButton3("Get Address", new DialogInterface.OnClickListener() {

            public void onClick(DialogInterface dialog, int which) {
                // TODO Auto-generated method stub
            Geocoder geocoder = new Geocoder(getBaseContext(), Locale.getDefault());
            try{
                List<Address> address = geocoder.getFromLocation(touchedPoint.getLatitudeE6() / 1E6, touchedPoint.getLongitudeE6() / 1E6 , 1);
                if (address.size() > 0){
                    String display = "";
                    for (int i = 0; i<address.get(0).getMaxAddressLineIndex(); i++){

                        display += address.get(0).getAddressLine(i) + "\n";
                    }
                    Toast t = Toast.makeText(getBaseContext(), display, Toast.LENGTH_LONG);
                    t.show();
                }
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }finally{
            }
        }});
        alert.setButton2("Toggle View", new DialogInterface.OnClickListener() {

            public void onClick(DialogInterface dialog, int which) {
                // TODO Auto-generated method stub

                if (map.isSatellite()){
                    map.setSatellite(false);
                    map.setStreetView(true);
                }else{
                    map.setStreetView(false);
                    map.setSatellite(true);
                }
            }
});
        alert.setButton("Place a Pin", new DialogInterface.OnClickListener() {

            public void onClick(DialogInterface dialog, int which) {
                // TODO Auto-generated method stub

                OverlayItem overlayItem = new OverlayItem(touchedPoint, "Hi!!", "2nd");
                CustomPinPoint custom = new CustomPinPoint(d, Main.this);   
                custom.insertPinpoint(overlayItem);
                overlayList.add(custom);

            }


        });
        alert.show();
        return true;
    }

        return false;
    }

}



public void onLocationChanged(Location l) {
    // TODO Auto-generated method stub
    lat = (int) (l.getLatitude() *1E6);
    longi = (int) (l.getLongitude() *1E6);
    GeoPoint ourLocation = new GeoPoint(lat,longi);
    OverlayItem overlayItem = new OverlayItem(ourLocation, "Hi!!", "2nd");
    CustomPinPoint custom = new CustomPinPoint(d, Main.this);   
    custom.insertPinpoint(overlayItem);
    overlayList.add(custom);

}




public void onProviderDisabled(String provider) {
    // TODO Auto-generated method stub

}




public void onProviderEnabled(String provider) {
    // TODO Auto-generated method stub

}




public void onStatusChanged(String provider, int status, Bundle extras) {
    // TODO Auto-generated method stub

}

}

HelloWorld.java

import com.google.android.maps.OverlayItem;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;


public class HelloWorld extends Activity
{

    protected void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    setContentView(R.layout.main);

    Button button1 = (Button) findViewById(R.id.button1);
    button1.setOnClickListener(new View.OnClickListener() 
    {
        public void onClick(View v)
        {
            Toast.makeText(HelloWorld.this, "you clicked on button![enter image description here][3]", Toast.LENGTH_LONG).show();
        }
});

Log cat

04-04 22:56:21.623: W/dalvikvm(309): threadid=1: thread exiting with uncaught exception    (group=0x4001d800)
04-04 22:56:21.703: E/AndroidRuntime(309): FATAL EXCEPTION: main
04-04 22:56:21.703: E/AndroidRuntime(309): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.mehul.googlemaps/com.mehul.googlemaps.HelloWorld}: android.view.InflateException: Binary XML file line #20: Error inflating class <unknown>
04-04 22:56:21.703: E/AndroidRuntime(309):  at        android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
04-04 22:56:21.703: E/AndroidRuntime(309):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
04-04 22:56:21.703: E/AndroidRuntime(309):  at android.app.ActivityThread.access$2300(ActivityThread.java:125)
04-04 22:56:21.703: E/AndroidRuntime(309):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
04-04 22:56:21.703: E/AndroidRuntime(309):  at  android.os.Handler.dispatchMessage(Handler.java:99)
04-04 22:56:21.703: E/AndroidRuntime(309):  at android.os.Looper.loop(Looper.java:123)
04-04 22:56:21.703: E/AndroidRuntime(309):  at android.app.ActivityThread.main(ActivityThread.java:4627)
04-04 22:56:21.703: E/AndroidRuntime(309):  at java.lang.reflect.Method.invokeNative(Native Method)
04-04 22:56:21.703: E/AndroidRuntime(309):  at java.lang.reflect.Method.invoke(Method.java:521)
04-04 22:56:21.703: E/AndroidRuntime(309):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
04-04 22:56:21.703: E/AndroidRuntime(309):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
04-04 22:56:21.703: E/AndroidRuntime(309):  at dalvik.system.NativeStart.main(Native   Method)
04-04 22:56:21.703: E/AndroidRuntime(309): Caused by: android.view.InflateException:    Binary XML file line #20: Error inflating class <unknown>
04-04 22:56:21.703: E/AndroidRuntime(309):  at android.view.LayoutInflater.createView(LayoutInflater.java:513)
04-04 22:56:21.703: E/AndroidRuntime(309):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:565)
04-04 22:56:21.703: E/AndroidRuntime(309):  at android.view.LayoutInflater.rInflate(LayoutInflater.java:618)
04-04 22:56:21.703: E/AndroidRuntime(309):  at android.view.LayoutInflater.inflate(LayoutInflater.java:407)
04-04 22:56:21.703: E/AndroidRuntime(309):  at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
04-04 22:56:21.703: E/AndroidRuntime(309):  at android.view.LayoutInflater.inflate(LayoutInflater.java:276)
04-04 22:56:21.703: E/AndroidRuntime(309):  at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:198)
04-04 22:56:21.703: E/AndroidRuntime(309):  at android.app.Activity.setContentView(Activity.java:1647)
04-04 22:56:21.703: E/AndroidRuntime(309):  at com.mehul.googlemaps.HelloWorld.onCreate(HelloWorld.java:20)
04-04 22:56:21.703: E/AndroidRuntime(309):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
04-04 22:56:21.703: E/AndroidRuntime(309):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
04-04 22:56:21.703: E/AndroidRuntime(309):  ... 11 more
04-04 22:56:21.703: E/AndroidRuntime(309): Caused by: java.lang.reflect.InvocationTargetException
04-04 22:56:21.703: E/AndroidRuntime(309):  at com.google.android.maps.MapView.<init>(MapView.java:238)
04-04 22:56:21.703: E/AndroidRuntime(309):  at java.lang.reflect.Constructor.constructNative(Native Method)
04-04 22:56:21.703: E/AndroidRuntime(309):  at   java.lang.reflect.Constructor.newInstance(Constructor.java:446)
04-04 22:56:21.703: E/AndroidRuntime(309):  at android.view.LayoutInflater.createView(LayoutInflater.java:500)
04-04 22:56:21.703: E/AndroidRuntime(309):  ... 21 more
04-04 22:56:21.703: E/AndroidRuntime(309): Caused by:   java.lang.IllegalArgumentException: MapViews can only be created inside instances of   MapActivity.
04-04 22:56:21.703: E/AndroidRuntime(309):  at com.google.android.maps.MapView.<init>(MapView.java:282)
04-04 22:56:21.703: E/AndroidRuntime(309):  at com.google.android.maps.MapView.<init>(MapView.java:255)
04-04 22:56:21.703: E/AndroidRuntime(309):  ... 25 more

If anything else is required let me know.. will put it up.

2012-04-04 17:33
by Mehul Rastogi
checkout your xml layout fil - pleerock 2012-04-04 17:40
if you have not get solution then edit post with xml' - ρяσѕρєя K 2012-04-04 17:52


0

Here is the logcat you have to watch out for

04-04 22:56:21.703: E/AndroidRuntime(309): Caused by:   java.lang.IllegalArgumentException: MapViews can only be created inside instances of   MapActivity.

What you can do is, create a test.xml file with the following

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<TextView
    android:id="@+id/hellotv"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="TextView" />


</LinearLayout>

and in your HelloWorld do setContentView(R.layout.test);

2012-04-04 17:40
by Win Myo Htet


0

java.lang.IllegalArgumentException: MapViews can only be created inside instances of   MapActivity.

The error message seems pretty clear to me. Your activity that includes a MapView needs to derive from MapActivity.

2012-04-04 17:38
by kabuko


0

In Helloworld class you are using setcontentView(r.layout.main);

and your main.xml has map view.

and from the below line in your code

public class HelloWorld extends Activity

you are extending to activity so the app is getting crashed.

use below line instead of above

public class HelloWorld extends MapActivity

or create a new layout file for HelloWorld.java..

Thats it...

2012-04-04 17:40
by Shankar Agarwal
Its giving error on rest of the code if i change from Activity to MapActivit - Mehul Rastogi 2012-04-04 18:19
Ads