Прохожу урок на StartAndroid, возникла ошибка в коде, не могу понять как исправить, нужный класс импортирован, всё переписал как в примере, помогите разобраться. Ошибка unreachable statement на строке:
AdapterContextMenuInfo acmi = (AdapterContextMenuInfo) item.getMenuInfo();
код:
public class MainActivity extends FragmentActivity implements LoaderManager.LoaderCallbacks<Cursor> {
private static final int CM_DELETE_ID = 1;
ListView lvData;
DB db;
SimpleCursorAdapter simpleCursorAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
db = new DB(this);
db.open();
String[] from = new String[]{DB.COLUMN_IMG, DB.COLUMN_TEXT};
int[] to = new int[]{R.id.ivImg, R.id.tvText};
simpleCursorAdapter = new SimpleCursorAdapter(this, R.layout.item, null, from, to, 0);
lvData = (ListView) findViewById(R.id.lvData);
lvData.setAdapter(simpleCursorAdapter);
registerForContextMenu(lvData);
getSupportLoaderManager().initLoader(0, null, this);
}
public void onButtonClick(View view) {
db.addRec("sometext " + (simpleCursorAdapter.getCount() + 1), R.drawable.alligator);
getSupportLoaderManager().getLoader(0).forceLoad();
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
menu.add(0, CM_DELETE_ID, 0, R.string.delete_record);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
return super.onContextItemSelected(item);
if (item.getItemId() == CM_DELETE_ID) {
AdapterContextMenuInfo acmi = (AdapterContextMenuInfo) item.getMenuInfo();
db.delRec(acmi.id);
getSupportLoaderManager().getLoader(0).forceLoad();
return true;
}
return super.onContextItemSelected(item);
}
@Override
protected void onDestroy() {
super.onDestroy();
db.close();
}
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
return new MyCursorLoader(this, db);
}
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
simpleCursorAdapter.swapCursor(data);
}
@Override
public void onLoaderReset(Loader<Cursor> loader) {
}
static class MyCursorLoader extends CursorLoader {
DB db;
public MyCursorLoader(Context context, DB db) {
super(context);
this.db = db;
}
@Override
public Cursor loadInBackground() {
Cursor cursor = db.getAllData();
try {
Thread.sleep(18000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return cursor;
}
}
}
unreachable statement - недостижимый код. Ваш метод onContextItemSelected() начинается с оператора return и дальнейший код этого метода будет не доступен и никогда не выполнится, о чем вы и получаете ошибку от компилятора, нужно удалить либо первый return, либо код после него, если его выполнение не требуется:
@Override
public boolean onContextItemSelected(MenuItem item) {
if (item.getItemId() == CM_DELETE_ID) {
AdapterContextMenuInfo acmi = (AdapterContextMenuInfo) item.getMenuInfo();
db.delRec(acmi.id);
getSupportLoaderManager().getLoader(0).forceLoad();
return true;
}
return super.onContextItemSelected(item);
}
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости