Нажатие кнопки Android не работает - PullRequest
4 голосов
/ 28 декабря 2011

Может кто-нибудь сказать мне, почему код от «Запуск нового кода» и далее не работает? Метод onClick в прослушивателях событий click не вызывается, и даже изменение текста метки не происходит.

В журнале показаны идентификаторы кнопок, поэтому что-то было найдено. Кнопки и метка находятся в TableLayout, который находится внутри LinearLayout.

Метод onCreate, в котором я связываю кнопки.

@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);
        }
    });

}

Макет (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 Я попытался удалить часть header, по сути, я добавил часть header, потому что раньше она не работала, когда я просто звонил findViewById()

Ответы [ 3 ]

1 голос
/ 28 декабря 2011

вы использовали это для сопоставления с вашей кнопкой

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

, но попробуйте использовать таким образом

final ImageButton btnSettings = (ImageButton)findViewById(R.id.btnSettings);
1 голос
/ 28 декабря 2011

удалить этот заголовок .findViewById (R.id.btnSettings);

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

// вы не надуваете какой-либо макет, у вашего представления контента уже есть макет contact_list.xml, в котором только ваши кнопки и метка.

0 голосов
/ 28 декабря 2011

если вы добавите точку останова в строке labelHeader.setText("Jump");, labelHeader имеет значение null?

Также вместо new View.OnClickListener() try new OnClickListener()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...