Android button does not work

Can someone tell me why the code “Starting a new code” does not work? The onClick method in click event listeners is not called, and even text change for the label is not performed.

The identifier of the buttons is displayed in the log so that something is found. Buttons and labels are located in the TableLayout , which is inside the LinearLayout .

The onCreate method, where I bind 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 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); } }); } 

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 to remove the header part, essentially adding the header part because it didn't work before when I just called findViewById()

+4
source share
3 answers

remove this header .findViewById (R.id.btnSettings);

 ImageButton btnSettings = (ImageButton)findViewById(R.id.btnSettings); 

// you don’t inflate any layout, your content has a contact_list.xml layout, this is only your buttons and shortcuts.

+1
source

you used this to map to your button

 final ImageButton btnSettings = (ImageButton) header.findViewById(R.id.btnSettings); 

but try to use this way

 final ImageButton btnSettings = (ImageButton)findViewById(R.id.btnSettings); 
+1
source

if you add a breakpoint in the line labelHeader.setText("Jump"); is labelHeader null?

Also, instead of new View.OnClickListener() try new OnClickListener()

0
source

Source: https://habr.com/ru/post/1388300/


All Articles