无法在父级或祖先语境

时间:2018-05-07 22:04:26

标签: java android

当我运行我的Android程序时,我收到此错误消息,并想知道是否有人知道如何修复它...

java.lang.IllegalStateException:无法在父级或祖先语句中找到方法StartRec(View)for android:onClick属性在视图类android.support.v7.widget.AppCompatButton上定义,ID为“button”

import android.Manifest;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.view.View;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;


        public class MainActivity extends AppCompatActivity {
            LocationManager locationManager;


            public void StartRec(View view, int[] grantResults) {



                    // Find the root of the external storage.
                    // See http://developer.android.com/guide/topics/data/data-  storage.html#filesExternal

                    File root = android.os.Environment.getExternalStorageDirectory();


                    // See http://stackoverflow.com/questions/3551821/android-write-to-sd-card-folder

                    File dir = new File(root.getAbsolutePath() + "/download");
                    dir.mkdirs();
                    File file = new File(dir, "myData.txt");

                    try {
                        FileOutputStream f = new FileOutputStream(file);

                    } catch (FileNotFoundException e) {
                        e.printStackTrace();

                    } catch (IOException e) {
                        e.printStackTrace();
                    }




                    if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {

                    if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED)
                        locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
                    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 0, locationListener);


                }


            }


            LocationListener locationListener = new LocationListener() {
                File root = android.os.Environment.getExternalStorageDirectory();


                // See http://stackoverflow.com/questions/3551821/android-write-to-sd-card-folder

                File dir = new File(root.getAbsolutePath() + "/download");
                File file = new File(dir, "myData.txt");


            @Override
            public void onLocationChanged(Location location) {
                ArrayList<Location> list = new ArrayList<>();
                list.add(location);
                GPX.writePath(file,"hello",list);

            }

            @Override
            public void onStatusChanged(String s, int i, Bundle bundle) {

            }

            @Override
            public void onProviderEnabled(String s) {

            }

            @Override
            public void onProviderDisabled(String s) {

            }

        };


    public void stopRec(View view) {
        Intent intent = new Intent(this, Statistics.class);
        startActivity(intent);
    }


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);  
    }


}

1 个答案:

答案 0 :(得分:0)

您已将方法定义为:

public void StartRec(View view, int[] grantResults)

但是,似乎您也尝试将此方法用作视图点击的回调。

但是,当这样调用时,方法签名应该只有一个参数,即视图,例如:

public void StartRec(View view)

当用户单击按钮时,只知道视图,UI不知道如何填充方法所需的整数数组,找到将此数据导入方法的不同方法。