有人能告诉我为什么从“开始新代码”开始的代码不起作用吗?单击事件侦听器中的onClick
方法不会被调用,甚至标签的文本更改也不会发生。
日志显示按钮的 ID,因此可以找到一些东西。按钮和标签位于TableLayout
a 中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>
更新
我尝试删除该header
部分,事实上,我添加了该header
部分,因为当我简单地调用它之前它不起作用findViewById()