我在几周内甚至没有接触代码,并说它属于Arraylist之后,就出现了这个错误。这就是我犯的错误。
JAVAlang.RuntimeException:无法启动活动组件信息{com.example.android.login/com.example.android.login.MainActivity}:java。lang.IndexOutOfBoundsException:索引0无效,android上的大小为0。应用程序。活动线程。在android上执行LaunchActivity(ActivityThread.java:2712)。应用程序。活动线程。android上的handleLaunchActivity(ActivityThread.java:2777)。应用程序。活动线程。在Android上获得900美元(ActivityThread.java:179)。应用程序。android上的ActivityThread$H.handleMessage(ActivityThread.java:1462)。操作系统。汉德勒。android上的dispatchMessage(Handler.java:102)。操作系统。活套。android上的loop(Looper.java:145)。应用程序。活动线程。java上的main(ActivityThread.java:5972)。朗,反思一下。方法在java上调用(本机方法)。朗,反思一下。方法在com上调用(Method.java:372)。Android内部的操作系统。ZygoteInit$MethodandArgscaler。在com上运行(ZygoteInit.java:1388)。Android内部的操作系统。合子体。main(ZygoteInit.java:1183)由以下原因引起:java。lang.IndexOutOfBoundsException:索引0无效,java的大小为0。util。ArrayList。java上的throwIndexOutOfBoundsException(ArrayList.java:255)。util。ArrayList。在com上获取(ArrayList.java:308)。实例Android登录。主要活动。android上的onCreate(MainActivity.java:66)。应用程序。活动android上的performCreate(Activity.java:6289)。应用程序。仪器仪表。android上的callActivityOnCreate(Instrumentation.java:1119)。应用程序。活动线程。performLaunchActivity(ActivityThread.java:2665)
下面是我的代码:
package com.example.android.login;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.res.Resources;
import android.location.Address;
import android.location.Geocoder;
import android.os.BatteryManager;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import com.parse.LogOutCallback;
import com.parse.Parse;
import com.parse.ParseObject;
import com.parse.ParseUser;
import com.parse.ParseException;
import java.io.IOException;
import java.util.List;
import java.util.Locale;
public class MainActivity extends ActionBarActivity {
private Toolbar toolbar;
public Button logoutButton;
public int level;
Button btnShowLocation;
GPSTracker gps;
public Button request_battery;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_appbar);
gps = new GPSTracker(MainActivity.this);
if(gps.canGetLocation()){
double latitude = gps.getLatitude();
double longitude = gps.getLongitude();
Geocoder geocoder;
List<Address> addresses = null;
geocoder = new Geocoder(this, Locale.getDefault());
try {
addresses = geocoder.getFromLocation(latitude, longitude, 1); // Here 1 represent max location result to returned, by documents it recommended 1 to 5
} catch (IOException e) {
e.printStackTrace();
}
String address = addresses.get(0).getAddressLine(0); // If any additional address line present than only, check with max available address lines by getMaxAddressLineIndex()
String city = addresses.get(0).getLocality();
String state = addresses.get(0).getAdminArea();
String country = addresses.get(0).getCountryName();
String postalCode = addresses.get(0).getPostalCode();
String knownName = addresses.get(0).getFeatureName();
// final TextView mTextView = (TextView) findViewById(R.id.location);
//mTextView.setText("Latitude "+latitude+" Longitude "+longitude);
final TextView mAdressTextView = (TextView) findViewById(R.id.addressNum);
mAdressTextView.setText(address);
final TextView mStateTextView = (TextView) findViewById(R.id.stateNum);
mStateTextView.setText(city+ ", "+ state+", " + postalCode);
}else{
gps.showSettingsAlert();
}
request_battery= (Button) findViewById(R.id.request_battery);
request_battery.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(MainActivity.this, Payment.class);
startActivity(i);
}
});
/* btnShowLocation.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
gps = new GPSTracker(MainActivity.this);
if(gps.canGetLocation()){
double latitude = gps.getLatitude();
double longitude = gps.getLongitude();
final TextView mTextView = (TextView) findViewById(R.id.location);
mTextView.setText("Latitude "+latitude+" Longitude "+longitude);
}else{
gps.showSettingsAlert();
}*/
batteryTxt = (TextView) this.findViewById(R.id.percent);
this.registerReceiver(this.mBatInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
toolbar = (Toolbar) findViewById(R.id.app_bar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
NavigationDrawerFragment drawerFragment = (NavigationDrawerFragment)
getSupportFragmentManager().findFragmentById(R.id.fragment_navigation_drawer);
drawerFragment.setUp(R.id.fragment_navigation_drawer, (DrawerLayout) findViewById(R.id.drawerLayout), toolbar);
logoutButton = (Button) findViewById(R.id.logoutButton);
logoutButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Set up a progress dialog
final ProgressDialog logout = new ProgressDialog(MainActivity.this);
logout.setTitle("Please wait.");
logout.setMessage("Logging out. Please wait.");
logout.show();
ParseUser.logOutInBackground(new LogOutCallback() {
public void done(ParseException e) {
logout.dismiss();
if (e == null) {
Intent logoutDone = new Intent(MainActivity.this, DispatchActivity.class);
startActivity(logoutDone);
} else {
Toast.makeText(MainActivity.this, "Logout Unsuccessful", Toast.LENGTH_LONG).show();
}
}
});
}
});
}
private TextView batteryTxt;
private BroadcastReceiver mBatInfoReceiver = new BroadcastReceiver(){
@Override
public void onReceive(Context ctxt, Intent intent) {
int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0);
batteryTxt.setText(String.valueOf(level) + "%");
}
};
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, 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();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
看来你在这里得到了一个零大小的列表:
addresses = geocoder.getFromLocation(latitude, longitude, 1); // Here 1 represent max location result to returned, by documents it recommended 1 to 5
因此,访问其第0个元素的行抛出ArrayIndexOutOfBoundsException:
String address = addresses.get(0).getAddressLine(0); // If any additional address line present than only, check with max available address lines by getMaxAddressLineIndex()
您应该在代码中进行安全检查以确保列表不是NULL并且大小大于0
很明显,代码:
addresses = geocoder.getFromLocation(latitude, longitude, 1);
正在返回一个空列表。在此之后添加日志语句,以确保打印列表的大小。
Log.i(TAG, "The size is: " + addresses.size());
我有一个问题,在Visual Studio代码中,即使启用了编辑器,我也看不到用于合并冲突的工具栏。codeLens。 知道它还能是什么吗?我试图重新启动VS Code,禁用/启用editor.code镜头。我甚至安装/卸载了Gitlen-Git增压。 提前谢谢你。 我的输入参考来自:接受VS代码中未出现的传入更改
问题内容: 我正在尝试使用after伪元素向网站添加一些效果。 和样式表: 我看到正在应用.product-show .readMore.less的样式,但是当我从Chrome(最新版本)/ MacOS检查站点时,在HTML块中看不到::after表示法。我读到一些较旧的浏览器有时会出现问题,但是我认为,如果我正确定义样式,我应该至少可以看到:: after伪元素表示法。我究竟做错了什么? 问题答
原因: Workerman是常驻内存运行的,常驻内存可以避免重复读取磁盘、重复解释编译PHP,以便达到最高性能。所以更改业务代码后需要手动reload或者restart才能生效。 同时workerman提供一个监控文件更新的服务,该服务检测到有文件更新后会自动运行reload,从新载入PHP文件。开发者将其放入到项目中随着项目启动即可。 注意:windows系统不支持reload,无法使用监控服务
问题内容: 在后面的代码中设置很容易,但是这会覆盖现有类。 我需要设置某些元素,并且我想应用一种样式作为视觉提示,说明该项目不能更改…很容易: 但是有时我 还 需要更改相同的元素,这意味着我将需要删除设置的CSS类,而不删除可能已分配的任何其他样式。 最好的方法是什么? 问题答案: 我采用了AnthonyWJones的原始代码并对其进行了修改,以使其在任何情况下均能正常工作:
一个图像网格,当我点击包含图像的div时,选择的div应该改变背景。现在它只做了第二次,当检查页面源代码时,我可以看到添加了更改背景style=“background-color:rgb(xxx,xxx,xxx);”的代码。 CSS 脚本 HTML 选中时 选择其他时
我使用Apache Flink 1.9和标准检查点/保存点机制来FS。 我的问题是:如果作业的代码发生了更改,从保存点恢复作业的正确方法是什么?例如,在重构之后,我重命名了几个类,之后我无法从旧的检查点恢复。 我丢失了我的数据,想问-在这种情况下我能做些什么? 所有运算符都有uid和name