I have two classes. One is Main and the other is HelloWorld. When I click a button which is defined in main.xml I want it to display a message defined in HelloWorld class to start. When i click the button it does not do anything.Code is given below. If anything else is required to put up let me know. Thanks
Main.java
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 orderButton = (Button)findViewById(R.id.button1);
orderButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
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();
}
});
} }
I have also written
<activity android:name=".HelloWorld" />
in my manifest
simple way
inlude
android:onClick="onClickMyButton"
as a attribute ofButton
inmain.xml
remove
onClickListener
from thisButton
now define this mathod in your Main Activity
now start your application it should work fine
Your second activity
HelloWorld
doesn't have set a content view so it doesn't find theButton
and you throw aNullPointerException
. You have to set a contentView withsetContentView
containing theButton
with the idR.id.button1
like you did in theMainActivity
.Your
HelloWorld
activity:Where
R.layout.layout_hello
represents a xml file in theres/layout
folder (namedlayout_hello.xml
):It's the same thing like you did in the
MainActivity
.ya you must need to use setContentView()
un comment that code and try again
Why did you comment that line?
//setContentView(R.layout.content_layout_id);
The activity is looking for the button
R.id.button1
is a null view.