Note that there are some explanatory texts on larger screens.

plurals
  1. POImageButton and NullPointerException
    primarykey
    data
    text
    <p>Could I get a NullPointerException because the button I am referencing is nested inside several layouts? Any time I reference browseEditBtn I get an exception. It's a simple button! Come'on.</p> <pre><code>&lt;LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" &gt; &lt;TableLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" android:stretchColumns="*"&gt; &lt;!-- &lt;include layout="@layout/mydesctextview" /&gt; --&gt; &lt;TableRow android:id="@+id/tableRow1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal"&gt; &lt;TextView android:text="TextView" android:layout_width="wrap_content" android:layout_gravity="left|center_vertical" android:id="@+id/txtItem" android:textSize="20dip" &gt;&lt;/TextView&gt; &lt;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" &gt;&lt;/ImageButton&gt; &lt;/TableRow&gt; &lt;/TableLayout&gt; &lt;/LinearLayout&gt; </code></pre> <p>Source Code <em>(The Button is called in the main onCreate())</em>:</p> <pre><code>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&lt;HashMap&lt;String, String&gt;&gt; groupList = new ArrayList&lt;HashMap&lt;String, String&gt;&gt;(); mCursor.moveToFirst(); while (!(mCursor.isAfterLast())) { HashMap&lt;String, String&gt; groupMap = new HashMap&lt;String, String&gt;(); 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&lt;ArrayList&lt;HashMap&lt;String, String&gt;&gt;&gt; childList = new ArrayList&lt;ArrayList&lt;HashMap&lt;String, String&gt;&gt;&gt;(); while (!(mCursor.isAfterLast())) { ArrayList&lt;HashMap&lt;String, String&gt;&gt; childListDesc = new ArrayList&lt;HashMap&lt;String, String&gt;&gt;(); for (int i = 0; i &lt; 1; i++) { HashMap&lt;String, String&gt; childMap = new HashMap&lt;String, String&gt;(); 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; } } </code></pre> <p>And finally the logcat, I think...</p> <blockquote> <p>06-30 13:01:29.390: ERROR/AndroidRuntime(9189): FATAL EXCEPTION: main 06-30 13:01:29.390: ERROR/AndroidRuntime(9189): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.simplyDesign.mdk/com.simplyDesign.mdk.BrowseActivity}: java.lang.NullPointerException 06-30 13:01:29.390: ERROR/AndroidRuntime(9189): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) 06-30 13:01:29.390: ERROR/AndroidRuntime(9189): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 06-30 13:01:29.390: ERROR/AndroidRuntime(9189): at android.app.ActivityThread.access$2300(ActivityThread.java:125) 06-30 13:01:29.390: ERROR/AndroidRuntime(9189): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 06-30 13:01:29.390: ERROR/AndroidRuntime(9189): at android.os.Handler.dispatchMessage(Handler.java:99) 06-30 13:01:29.390: ERROR/AndroidRuntime(9189): at android.os.Looper.loop(Looper.java:123) 06-30 13:01:29.390: ERROR/AndroidRuntime(9189): at android.app.ActivityThread.main(ActivityThread.java:4627) 06-30 13:01:29.390: ERROR/AndroidRuntime(9189): at java.lang.reflect.Method.invokeNative(Native Method) 06-30 13:01:29.390: ERROR/AndroidRuntime(9189): at java.lang.reflect.Method.invoke(Method.java:521) 06-30 13:01:29.390: ERROR/AndroidRuntime(9189): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858) 06-30 13:01:29.390: ERROR/AndroidRuntime(9189): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 06-30 13:01:29.390: ERROR/AndroidRuntime(9189): at dalvik.system.NativeStart.main(Native Method) 06-30 13:01:29.390: ERROR/AndroidRuntime(9189): Caused by: java.lang.NullPointerException 06-30 13:01:29.390: ERROR/AndroidRuntime(9189): at com.simplyDesign.mdk.BrowseActivity.onCreate(BrowseActivity.java:62) 06-30 13:01:29.390: ERROR/AndroidRuntime(9189): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 06-30 13:01:29.390: ERROR/AndroidRuntime(9189): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 06-30 13:01:29.390: ERROR/AndroidRuntime(9189): ... 11 more</p> </blockquote> <p><strong>edit_01</strong></p> <pre><code>public void doAction(View v) { startActivity(new Intent(getApplicationContext(), EditItemActivity.class)); } </code></pre> <p>I have used other buttons in the past to point to EditItemActivity and they have worked fine.</p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload