gpt4 book ai didi

java - onCreate() 被无限调用

转载 作者:行者123 更新时间:2023-12-02 03:49:52 27 4
gpt4 key购买 nike

我是 Android 新手,我不明白为什么我的 Activity 中的 onCreate() 被一遍又一遍地调用。在我的 MainActivity 中,我有这个函数搜索,按下按钮时会调用该函数。

private void search(View v){
//Get input fields if null then dont restrict search
...
...
Intent i = new Intent(getApplicationContext(), PersonActivity.class);
i.putExtra("miles",numMiles);
i.putExtra("min",numMin);
startActivity(i);
}

然后在我的 PersonActivity 类中我有这个 onCreate 方法。

public class PersonActivity extends ActionBarActivity {
private static final String TAG = MainActivity.class.getSimpleName();
public ArrayList<PersonInfo> people;
private LayoutInflater inflater;
private Context _context;
public PersonInfoListAdapter _adapter;
public static ListView _list;
public int _position;
private static final String APP_ID = "4cae6e4d7d89bc4b02196b352ae91650";
// Find this in your developer console
private static final String API_KEY = "4A3243EECEA842F7B1FC6E7A4B00DA7A";

public PersonActivity() {}

@Override
protected void onCreate(Bundle savedInstanceState) {;

super.onCreate(savedInstanceState);
setContentView(R.layout.activity_person);
View listV = findViewById(R.id.friendList);
_list = (ListView) listV;
CMApiCredentials.initialize(APP_ID, API_KEY, getApplicationContext());

try {
people = new ArrayList<PersonInfo>();

Context context = _list.getContext();
_adapter = new PersonInfoListAdapter(context, people);
_list.setAdapter(_adapter);

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

_list.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
View parentRow = (View) view.getParent();
return true;
}
});

Integer numMin = -1;
Integer numMiles = -1;
Bundle extras = getIntent().getExtras();
if (extras != null) {
numMin = extras.getInt("min");
numMiles = extras.getInt("miles");
Log.d("Person Activity", "Miles" + numMiles.toString());
}

queryForPeople(numMiles, numMin);
}

private void queryForPeople(Integer numMiles, Integer numMin){
//Get users location
LocationManager locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
LocationListener locationListener = new MyLocationListener();
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 10, locationListener);
Location lastKnownLoc = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);


double lat = lastKnownLoc.getLatitude();
double lon = lastKnownLoc.getLongitude();

Intent myIntent = new Intent(this, PersonActivity.class);
startActivity(myIntent);
//search for friends
PersonInfo.searchObjects(this, SearchQuery.filter("location").near(lon, lat).within(numMiles, DistanceUnits.mi).searchQuery(),
new Response.Listener<CMObjectResponse>() {
@Override
public void onResponse(CMObjectResponse response) {
List<CMObject> objectList = response.getObjects();
for (CMObject o : objectList) {
PersonInfo p = (PersonInfo) o;
people.add(p);
Log.d(TAG, "Person was found: " + p.getName());
}

}
});

_adapter.notifyDataSetChanged();
}


private class MyLocationListener implements LocationListener {

@Override
public void onLocationChanged(Location loc) {
Toast.makeText(
getBaseContext(),
"Location changed: Lat: " + loc.getLatitude() + " Lng: "
+ loc.getLongitude(), Toast.LENGTH_SHORT).show();
}

@Override
public void onProviderDisabled(String provider) {}

@Override
public void onProviderEnabled(String provider) {}

@Override
public void onStatusChanged(String provider, int status, Bundle extras) {}
}

问题是我的 personActivity 中的 onCreate() 正在被调用。我不明白为什么。 queryForPeople 调用 API,该 API 返回我用来填充适配器中使用的人员 ArrayList 的信息。

有什么想法吗?

最佳答案

您的 queryForPeople 方法对您已经运行的 Activity 调用 startActivity。所以这最终将是无限递归的。我不明白你为什么想从 Activity 的任何地方开始,这根本没有意义。除非您打算对这两行进行其他操作,否则只需将其删除即可。

关于java - onCreate() 被无限调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35974485/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com