Могу ли я получить исключение NullPointerException, поскольку кнопка, на которую я ссылаюсь, вложена в несколько макетов?Каждый раз, когда я ссылаюсь на browseEditBtn, я получаю исключение.Это простая кнопка!Come'on.
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
>
<TableLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:stretchColumns="*">
<!-- <include layout="@layout/mydesctextview" /> -->
<TableRow
android:id="@+id/tableRow1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:text="TextView"
android:layout_width="wrap_content"
android:layout_gravity="left|center_vertical"
android:id="@+id/txtItem"
android:textSize="20dip"
></TextView>
<ImageButton
android:src="@drawable/editbtn"
android:layout_marginRight="10dip"
android:layout_gravity="right|center_vertical"
android:id="@+id/browseEditBtn"
android:background="@drawable/my_group_statelist"
></ImageButton>
</TableRow>
</TableLayout>
</LinearLayout>
Исходный код (Кнопка вызывается в главном onCreate ()) :
public class BrowseActivity extends ExpandableListActivity {
final private String[] asColumnsToReturn = {
Items.ITEMS_TABLE_NAME + "." + Items.ITEMS_ITEM,
Items.ITEMS_TABLE_NAME + "." + Items.ITEMS_DESC,
Items.ITEMS_TABLE_NAME + "." + Items.ITEMS_MANU,
Items.ITEMS_TABLE_NAME + "." + Items.ITEMS_ID };
@SuppressWarnings("unchecked")
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.browse);
DbHelper dbh = new DbHelper(this.getApplicationContext());
SQLiteDatabase db = dbh.getWritableDatabase();
SQLiteQueryBuilder queryBuilder = new SQLiteQueryBuilder();
queryBuilder.setTables(Items.ITEMS_TABLE_NAME);
ExpandableListView browseView = (ExpandableListView) findViewById(android.R.id.list);
Button editBrowseBtn = (Button) findViewById(R.id.browseEditBtn);
Cursor mCursor = queryBuilder.query(db, asColumnsToReturn, null, null,
null, null, Items.DEFAULT_SORT_ORDER);
startManagingCursor(mCursor);
SimpleExpandableListAdapter mAdapter = new SimpleExpandableListAdapter(
this, createGroup(), R.layout.row, R.layout.row, new String[] {
Items.ITEMS_ITEM, Items.ITEMS_DESC }, new int[] {
R.id.txtItem, R.id.dscItem }, createChildren(),
R.layout.exprow, new String[] { Items.ITEMS_DESC,
Items.ITEMS_MANU }, new int[] { R.id.dscItem,
R.id.manuItem });
browseView.setAdapter(mAdapter);
editBrowseBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(BrowseActivity.this,
EditItemActivity.class);
startActivity(intent);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
menu.add("Add Item").setIntent(new Intent(this, AddItemActivity.class));
return super.onCreateOptionsMenu(menu);
}
@SuppressWarnings("rawtypes")
public List createGroup() {
DbHelper dbh = new DbHelper(this.getApplicationContext());
SQLiteDatabase db = dbh.getWritableDatabase();
SQLiteQueryBuilder queryBuilder = new SQLiteQueryBuilder();
queryBuilder.setTables(Items.ITEMS_TABLE_NAME);
Cursor mCursor = queryBuilder.query(db, new String[] {
Items.ITEMS_ITEM, Items.ITEMS_DESC }, null, null, null, null,
Items.DEFAULT_SORT_ORDER);
startManagingCursor(mCursor);
ArrayList<HashMap<String, String>> groupList = new ArrayList<HashMap<String, String>>();
mCursor.moveToFirst();
while (!(mCursor.isAfterLast())) {
HashMap<String, String> groupMap = new HashMap<String, String>();
groupMap.put(Items.ITEMS_ITEM,
mCursor.getString(mCursor.getColumnIndex(Items.ITEMS_ITEM)));
groupMap.put(Items.ITEMS_DESC,
mCursor.getString(mCursor.getColumnIndex(Items.ITEMS_DESC)));
groupList.add(groupMap);
mCursor.moveToNext();
}
return (List) groupList;
}
@SuppressWarnings("rawtypes")
public List createChildren() {
DbHelper dbh = new DbHelper(this.getApplicationContext());
SQLiteDatabase db = dbh.getWritableDatabase();
SQLiteQueryBuilder queryBuilder = new SQLiteQueryBuilder();
queryBuilder.setTables(Items.ITEMS_TABLE_NAME);
Cursor mCursor = queryBuilder.query(db, new String[] {
Items.ITEMS_ITEM, Items.ITEMS_DESC, Items.ITEMS_MANU }, null,
null, null, null, Items.DEFAULT_SORT_ORDER);
startManagingCursor(mCursor);
mCursor.moveToFirst();
ArrayList<ArrayList<HashMap<String, String>>> childList = new ArrayList<ArrayList<HashMap<String, String>>>();
while (!(mCursor.isAfterLast())) {
ArrayList<HashMap<String, String>> childListDesc = new ArrayList<HashMap<String, String>>();
for (int i = 0; i < 1; i++) {
HashMap<String, String> childMap = new HashMap<String, String>();
childMap.put(Items.ITEMS_DESC, mCursor.getString(mCursor
.getColumnIndex(Items.ITEMS_DESC)));
childMap.put(Items.ITEMS_MANU, mCursor.getString(mCursor
.getColumnIndex(Items.ITEMS_MANU)));
childListDesc.add(childMap);
}
childList.add(childListDesc);
mCursor.moveToNext();
}
return (List) childList;
}
}
И, наконец, logcat, я думаю...
06-30 13: 01: 29.390: ОШИБКА / AndroidRuntime (9189): ИСКЛЮЧИТЕЛЬНОЕ ИСКЛЮЧЕНИЕ: основной 06-30 13: 01: 29.390: ОШИБКА / AndroidRuntime (9189): Java.lang.RuntimeException: невозможно запустить действие ComponentInfo {com.simplyDesign.mdk / com.simplyDesign.mdk.BrowseActivity}: java.lang.NullPointerException 06-30 13: 01: 29.390: ОШИБКА / AndroidRuntime (9189): в android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2663) 06-30 13: 01: 29.390: ОШИБКА / AndroidRuntime (9189): в android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2679) 06-30 13: 01: 29.390: ОШИБКА / AndroidRuntime (9189): на android.app.ActivityThread.access $ 2300 (ActivityThread.java:125) 06-30 13: 01: 29.390: ОШИБКА / AndroidRuntime (9189): на android.app.ActivityThread $ H.handleMessage(ActivityThread.java:2033) 06-30 13: 01: 29.390: ОШИБКА / AndroidRuntime (9189): на android.os.Handler.dispatchMessage (Handler.java:99) 06-30 13: 01: 29.390: ОШИБКА / AndroidRuntime (9189): на android.os.Looper.loop (Looper.java:123) 06-30 13: 01: 29.390:ОШИБКА / AndroidRuntime (9189): на android.app.ActivityThread.main (ActivityThread.java:4627) 06-30 13: 01: 29.390: ОШИБКА / AndroidRuntime (9189): на java.lang.reflect.Method.invokeNative (NativeМетод) 06-30 13: 01: 29.390: ОШИБКА / AndroidRuntime (9189): в java.lang.reflect.Method.invoke (Method.java:521) 06-30 13: 01: 29.390: ОШИБКА / AndroidRuntime (9189): at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:858) 06-30 13: 01: 29.390: ОШИБКА / AndroidRuntime (9189): на com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 06-30 13: 01: 29.390: ОШИБКА / AndroidRuntime (9189): в dalvik.system.NativeStart.main (собственный метод) 06-30 13: 01: 29.390: ОШИБКА / AndroidRuntime (9189): Вызвано: java.lang.NullPointerException 06-30 13: 01: 29.390: ОШИБКА / AndroidRuntime (9189): в com.simplyDesign.mdk.BrowseActivity.onCreate (BrowseActivity.java:62) 06-30 13: 01: 29.390: ОШИБКА / AndroidRuntime (9189): в android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1049) 06-30 13: 01: 29.390: ОШИБКА / AndroidRuntime (9189): в android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 06-30 13: 01: 29.390: ОШИБКА / AndroidRuntime (9189): ... еще 11
edit_01
public void doAction(View v) {
startActivity(new Intent(getApplicationContext(),
EditItemActivity.class));
}
В прошлом я использовал другие кнопки для указания на EditItemActivity, и они работали нормально.