Can someone tell me why the code from “Starting new code” onwards does not work?
The onClick method in the click event listeners does not get called and even the text change for the label does not take place.
The log shows ID’s for the buttons so something is being found. The buttons and label are in a TableLayout which is inside a LinearLayout.
The onCreate method where I’m binding the buttons.
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.contact_list);
setDefaultKeyMode(DEFAULT_KEYS_SHORTCUT);
mContactList = (ListView) findViewById(R.id.contactList);
mInputManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
mApplicationData = (GlobalApplicationData) getApplication();
setTitle(mApplicationData.getAppTitle());
mSettings = mApplicationData.getSettings();
initializedEncryptionKey();
mContactsDB = mApplicationData.getContactsDB();
mXmppModalUI = new XmppModalUI(mInputManager);
mXmppModalUI.initializeModalUI(this, mSettings, this);
mApplicationData.getPersistentXMPP().setModalUI(mXmppModalUI);
mApplicationData.getPersistentXMPP().setContactListCallback(this);
mApprater = new Appirater(this, mSettings);
if (mApplicationData.getUpdateChecker() == null && mApplicationData.getUpdateCheckerUrl() != null) {
mApplicationData.setUpdateChecker(new UpdateChecker(getApplicationContext(), mApplicationData.getUpdateCheckerUrl()));
}
//starting new code
Toast.makeText(getApplicationContext(), "Starting Ali's Code", Toast.LENGTH_SHORT).show();
TableLayout header = (TableLayout) findViewById(R.id.headerLayout);
Log.d("TableLayout",((header == null)?"NOT FOUND":"FOUND "+header.getId()));
final TextView labelHeader = (TextView) header.findViewById(R.id.headerText);
labelHeader.setText("Jump");
final ImageButton btnSettings = (ImageButton) header.findViewById(R.id.btnSettings);
btnSettings.setClickable(true);
Log.d("Settings Button",((btnSettings == null)?"NOT FOUND":"FOUND "+btnSettings.getId()));
btnSettings.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
Log.d("OnClick","Here");
// Perform action on clicks
Toast.makeText(getApplicationContext(), "Settings", Toast.LENGTH_SHORT).show();
startGlobalSettings();
}
});
final ImageButton btnAdd = (ImageButton) header.findViewById(R.id.btnAdd);
btnAdd.setClickable(true);
Log.d("Add Button",((btnAdd == null)?"NOT FOUND":"FOUND "+btnAdd.getId()));
btnAdd.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
Log.d("OnClick","Here");
// Perform action on clicks
Toast.makeText(getApplicationContext(), "ADD", Toast.LENGTH_SHORT).show();
showDialog(DialogIds.ADD_CONTACT);
}
});
}
The layout (contact_list.xml):
<TableLayout
android:id="@+id/headerLayout"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:stretchColumns="1" >
<TableRow>
<ImageButton
android:id="@+id/btnSettings"
android:gravity="left"
android:padding="3dip"
android:src="@drawable/ic_menu_add"
android:hint="@string/label_settings" />
<TextView
android:id="@+id/headerText"
android:gravity="center"
android:padding="3dip"
android:text="Blank"
android:height="50dip"/>
<ImageButton
android:id="@+id/btnAdd"
android:background="@drawable/disconnectbutton"
android:gravity="right"
android:padding="3dip"
android:src="@drawable/ic_menu_add"
android:hint="@string/label_add" />
</TableRow>
</TableLayout>
<ListView
android:id="@+id/contactList"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:background="@color/transparent"
android:cacheColorHint="#00000000" >
</ListView>
UPDATE
I tried removing the header part, as a matter of fact, I add the header part because it wasn’t working before when I simply called findViewById()
remove this header.findViewById(R.id.btnSettings);
//you are not inflating the any layout, already your content view has layout contact_list.xml in this only your buttons and label are there.