且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

在视图类上定义的android:onClick属性的父级或祖先上下文中找不到方法.

更新时间:2023-11-16 19:50:46

您已经定义了 android:onClick ="nearhs" ,但是在活动"中没有使用该名称的方法.>

将此添加到您的活动中:

  public void nearhs(视图){} 

还尝试在 onLocationChanged()中为 nearhspt 设置 onClickListener .将此侦听器移到 onResume() onCreate().

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>

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().