Reputation: 69
Iam using an android project code, which load nearby hospitals and police stations when clicking the text. But when i click on Nearbyhospital the App is force closing, in xml file of the home page it is saying that iam never used onclick method,i tried adding the method for nearhs in .java page.. stillthere are many errors .. Does anyone see something where I am missing something or have made a mistake?
Logcat below:
java.lang.IllegalStateException: Could not find method nearhs(View) in a parent or ancestor Context for android:onClick attribute defined on view class android.support.v7.widget.AppCompatTextView with id 'nearhospitals1'
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.resolveMethod(AppCompatViewInflater.java:307)
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:266)
at android.view.View.performClick(View.java:5637)
at android.view.View$PerformClick.run(View.java:22433)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:153)
at android.app.ActivityThread.main(ActivityThread.java:6208)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:891)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:781)
Home.java :
public class home extends AppCompatActivity implements LocationListener{
Button alert;
RelativeLayout rl1;
TextView nearhspt;
TextView nearpolice;
TextView allhspt;
TextView allpoli;
TextView Bld;
LocationManager locationManager;
String mprovider;
// Button service;
String longitude, latitude;
// SharedPreferences shared;
// SharedPreferences.Editor editor;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.home);
alert=(Button)findViewById(R.id.button_alert);
// shared = getSharedPreferences("get", Context.MODE_PRIVATE);
// editor = shared.edit();
nearhspt= (TextView) findViewById(R.id.nearhospitals1);
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
mprovider = locationManager.getBestProvider(criteria, false);
if (mprovider != null && !mprovider.equals("")) {
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
return;
}
Location location = locationManager.getLastKnownLocation(mprovider);
locationManager.requestLocationUpdates(mprovider, 15000, 1, this);
if (location != null)
onLocationChanged(location);
else
Toast.makeText(getBaseContext(), "TURN ON GPS", Toast.LENGTH_SHORT).show();
}
alert.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
SharedPreferences pref = getApplicationContext().getSharedPreferences("pref", MODE_PRIVATE);
String cal = pref.getString("call", "");
String sms=pref.getString("msg","");
Log.e(cal, "gbggfgffg");
Intent inte = new Intent(Intent.ACTION_CALL);
inte.setData(Uri.parse("tel:" + cal));
if (ActivityCompat.checkSelfPermission(home.this,
Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
return;
}
// Uri smsToUri = Uri.parse("smsto:" + sms);
// message = message.replace("%s", StoresMessage.m_storeName);
//intent.putExtra("sms_body", message);
startActivity(inte);
}
});}
public void alerthspitl(View view){
Intent inten = new Intent(Intent.ACTION_VIEW);
SharedPreferences pref = getApplicationContext().getSharedPreferences("pref", MODE_PRIVATE);
String sms=pref.getString("msg","");
Uri uri = Uri.parse("smsto:" + sms);
Intent intent = new Intent(Intent.ACTION_SENDTO, uri);
intent.putExtra("sms_body", "Accident");
startActivity(intent);
Toast.makeText(getApplication(),"sent",Toast.LENGTH_LONG).show();
}
public void onBackPressed(){
AlertDialog.Builder alert=new AlertDialog.Builder(home.this);
alert.setMessage("Do you want to exit?").setCancelable(false).setPositiveButton("Yes",new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
finishAffinity();
}
}).setNegativeButton("No",new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
dialog.cancel();
}
});
AlertDialog al=alert.create();
al.setTitle("Exit");
al.show();
return;
}
@Override
public void onLocationChanged(Location location) {
Double longitudes = location.getLongitude();
longitude = Double.toString(longitudes);
Log.e("longitude_value", longitude);
Double latitudes = location.getLatitude();
latitude = Double.toString(latitudes);
Log.e("latiude_value", latitude);
nearhspt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent= new Intent(home.this,near_hsptl.class);
SharedPreferences pref=getApplicationContext().getSharedPreferences("pref",MODE_PRIVATE);
SharedPreferences.Editor editor=pref.edit();
editor.putString("current_longitude", longitude);
editor.putString("current_latitude", latitude);
editor.apply();
startActivity(intent);
}
});
}
public void nearpol(View view){
nearpolice=(TextView)findViewById(R.id.nearpolicestatn1);
//Intent intent= new Intent(home.this,near_police.class);
SharedPreferences pref=getApplicationContext().getSharedPreferences("pref",MODE_PRIVATE);
SharedPreferences.Editor editor=pref.edit();
editor.putString("current_longitude", longitude);
editor.putString("current_latitude", latitude);
editor.apply();
Intent intent= new Intent(home.this,near_police.class);
startActivity(intent);
}
public void allhsp(View view){
allhspt=(TextView)findViewById(R.id.allhsptl1);
Intent intent= new Intent(home.this,all_hsptl.class);
startActivity(intent);
}
public void allpoli(View view){
allpoli=(TextView)findViewById(R.id.allpolice1);
Intent intent= new Intent(home.this,all_police.class);
startActivity(intent);
}
public void Bld(View view){
allpoli=(TextView)findViewById(R.id.allpolice1);
Intent intent= new Intent(home.this,blood.class);
startActivity(intent);
}
@Override
public void onStatusChanged(String s, int i, Bundle bundle) {
}
@Override
public void onProviderEnabled(String s) {
}
@Override
public void onProviderDisabled(String s) {
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.opt, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings){
Intent intent= new Intent(home.this,view_profile.class);
startActivity(intent);
}
else if(id==R.id.up){
Intent intent= new Intent(home.this,updt_profile.class);
startActivity(intent);
}
else if(id==R.id.pswd){
Intent intent= new Intent(home.this,updt_pswd.class);
startActivity(intent);
}
else if(id==R.id.logout){
finishAffinity();
}
return super.onOptionsItemSelected(item);
}
}
Home.xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
> android:layout_width="match_parent"
> android:layout_height="match_parent"
> android:background="#9e9e9e"
> android:id="@+id/rl"
> >
>
>
> <Button
> android:text="Alert police"
> android:textColor="#FFFFFF"
> android:textStyle="bold"
> android:textSize="20dp"
> android:layout_width="182dp"
> android:layout_height="70dp"
> android:layout_marginTop="5dp"
> android:background="#EF5350"
>
> android:layout_marginLeft="5dp"
> android:id="@+id/button_alert"
> style="@android:style/Widget.Button.Small"
> android:layout_alignParentLeft="true"
> android:layout_alignParentStart="true"
> android:layout_alignParentTop="true" />
>
>
> <LinearLayout
> android:layout_width="wrap_content"
> android:layout_height="190dp"
> android:orientation="vertical"
> android:layout_marginTop="5dp"
> android:background="@mipmap/download"
> android:layout_below="@+id/button_alert"
> android:layout_marginRight="5dp"
> android:layout_marginLeft="5dp"
> android:layout_alignParentRight="true"
> android:layout_alignParentEnd="true"
> android:layout_alignParentLeft="true"
> android:layout_alignParentStart="true">
>
>
> <TextView
> android:layout_width="wrap_content"
> android:layout_height="wrap_content"
> android:text="All Hospitals"
> android:layout_marginLeft="65dp"
> android:id="@+id/allhsptl1"
> android:onClick="allhsp"
> android:layout_marginTop="20dp"
> android:textSize="25dp"
> android:textStyle="bold"
> android:textColor="#f44336"/>
>
>
> <TextView
> android:id="@+id/nearhospitals1"
> android:layout_width="wrap_content"
> android:layout_height="wrap_content"
> android:layout_marginLeft="60dp"
> android:layout_marginTop="20dp"
> android:onClick="nearhs"
> android:text="Near Hospitals"
> android:textColor="#f44336"
> android:textSize="25dp"
> android:textStyle="bold" />
>
> <TextView
> android:layout_width="wrap_content"
> android:layout_height="wrap_content"
> android:text="Blood Doners"
> android:onClick="Bld"
> android:id="@+id/Blood_donors"
> android:layout_marginLeft="60dp"
> android:layout_marginTop="15dp"
> android:textSize="25dp"
> android:textStyle="bold"
> android:textColor="#f44336"/>
> </LinearLayout>
>
> <LinearLayout
> android:layout_width="wrap_content"
> android:layout_height="210dp"
> android:layout_marginRight="5dp"
> android:layout_marginLeft="5dp"
> android:orientation="vertical"
> android:background="@mipmap/hospital"
> android:weightSum="1"
> android:layout_marginTop="5dp"
> android:layout_alignParentBottom="true"
> android:layout_alignParentLeft="true"
> android:layout_alignParentStart="true"
> android:layout_alignParentRight="true"
> android:layout_alignParentEnd="true">
>
>
>
> <TextView
> android:layout_width="wrap_content"
> android:layout_height="wrap_content"
> android:text="All PoliceStation"
> android:layout_marginLeft="60dp"
> android:onClick="allpoli"
> android:layout_marginTop="20dp"
> android:id="@+id/allpolice1"
> android:textSize="25dp"
> android:textStyle="bold"
> android:textColor="#f44336"/>
>
>
> <TextView
> android:layout_width="wrap_content"
> android:layout_height="wrap_content"
> android:text="Near PoliceStation"
> android:layout_marginLeft="40dp"
> android:onClick="nearpol"
> android:layout_marginTop="40dp"
> android:id="@+id/nearpolicestatn1"
> android:textSize="25dp"
> android:textStyle="bold"
> android:textColor="#f44336"
> android:layout_weight="5.46" />
>
>
> </LinearLayout>
>
> <Button
> android:text="Alert hospital"
> android:textColor="#FFFFFF"
> android:textStyle="bold"
> android:textSize="20dp"
> android:layout_width="180dp"
> android:layout_height="70dp"
> android:background="#EF5350"
> android:layout_marginRight="5dp"
> android:onClick="alerthspitl"
> android:id="@+id/button_alert2"
>
> style="@android:style/Widget.Button.Small"
> android:layout_marginTop="5dp"
> android:layout_alignParentRight="true"
> android:layout_alignParentEnd="true" />
> </RelativeLayout>
Upvotes: 1
Views: 6165
Reputation: 15574
You have defined android:onClick="nearhs"
, but there is no method available with such name in your Activity.
Add this on your Activity:
public void nearhs(View view) {
}
Also you are trying to set onClickListener
for nearhspt
in onLocationChanged()
. Move this listener to onResume()
or onCreate()
.
Upvotes: 4