-2
私はアンドロイドプログラミングの新機能で、インターネットのどこかからこのスニペットを受け取り、「getActivity()を解決できません」というメッセージが表示されましたが、私はgetApplicationContext関数。問題なく実行するにはどうすればよいですか?GoogleオートコンプリートではgetActivity()を解決できません
public class MapsActivity extends FragmentActivity implements OnMapReadyCallback, DirectionFinderListener {
private GoogleMap mMap;
private Button btnFindPath;
//private EditText etOrigin;
//private EditText etDestination;
private List<Marker> originMarkers = new ArrayList<>();
private List<Marker> destinationMarkers = new ArrayList<>();
private List<Polyline> polylinePaths = new ArrayList<>();
private ProgressDialog progressDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
// Obtain the SupportMapFragment and get notified when the map is ready to be used.
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
AutoCompleteTextView etOriginView = (AutoCompleteTextView) findViewById(R.id.etOrigin);
etOriginView.setAdapter(new PlacesAutoCompleteAdapter(getActivity(), R.layout.autocomplete_list_item));
etOriginView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
// Get data associated with the specified position
// in the list (AdapterView)
String description = (String) parent.getItemAtPosition(position);
Toast.makeText(getActivity(), description, Toast.LENGTH_SHORT).show();
}
});
btnFindPath = (Button) findViewById(R.id.btnFindPath);
//etOrigin = (EditText) findViewById(R.id.etOrigin);
//etDestination = (EditText) findViewById(R.id.etDestination);
btnFindPath.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
sendRequest();
}
});
}
PlacesAutoCompleteAdapterクラス
class PlacesAutoCompleteAdapter extends ArrayAdapter<String> implements Filterable {
ArrayList<String> resultList;
Context mContext;
int mResource;
PlaceAPI mPlaceAPI = new PlaceAPI();
public PlacesAutoCompleteAdapter(Context context, int resource) {
super(context, resource);
mContext = context;
mResource = resource;
}
@Override
public int getCount() {
// Last item will be the footer
return resultList.size();
}
@Override
public String getItem(int position) {
return resultList.get(position);
}
@Override
public Filter getFilter() {
Filter filter = new Filter() {
@Override
protected FilterResults performFiltering(CharSequence constraint) {
FilterResults filterResults = new FilterResults();
if (constraint != null) {
resultList = mPlaceAPI.autocomplete(constraint.toString());
filterResults.values = resultList;
filterResults.count = resultList.size();
}
return filterResults;
}
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
if (results != null && results.count > 0) {
notifyDataSetChanged();
}
else {
notifyDataSetInvalidated();
}
}
};
return filter;
}
}
すべてのヘルプは、事前に感謝を歓迎です! 私のGoogle Places API Webサービスは、100%のエラーがあることを示しているため、アダプタに何か問題があることを意味していますか?試してみてくださいMapsActivity.this
のinsted。すでに 'Activity'の中にいますので、' getActivity() 'を呼び出すのは意味がありません。代わりに 'this'をどうですか? –