使用onOptionsItemSelected和布局中的按钮

时间:2013-06-28 15:09:33

标签: android android-layout android-widget android-button

我尝试个性化有关布局更改(http://developer.android.com/training/animation/layout.html)的Android教程,但在代码中有这段代码

public boolean onOptionsItemSelected(MenuItem item) {

    switch (item.getItemId()) {
    case android.R.id.home:
        // Navigate "up" the demo structure to the launchpad activity.
        // See http://developer.android.com/design/patterns/navigation.html
        // for more.
        NavUtils.navigateUpTo(this, new Intent(this, MainActivity.class));
        return true;

    case R.id.action_add_item:
        // Hide the "empty" view since there is now at least one item in the
        // list.
        findViewById(android.R.id.empty).setVisibility(View.GONE);
        addItem();
        return true;
    }

    return super.onOptionsItemSelected(item);
}

在我的情况下,菜单中没有按钮,但我使用外部按钮。我试着用这个按钮:

<Button
            android:id="@+id/buttonPost"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:layout_marginLeft="30dp"
            android:layout_toRightOf="@+id/editTextComment"
            android:text="Post"
            android:onClick="add" />

使用方法

    public void add(View view) {
    findViewById(android.R.id.empty).setVisibility(View.GONE);
    addItem();

}

但是这个解决方案不起作用。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

onOptionsItemSelected用于与menu一起使用的选项onCreateOptionsMenu(Menu menu)。如果您希望此代码适用于onClickButton switch上的Button,请将此代码移至id

public void add(View v) {

   switch (v.getId()) {
   case R.id.buttonPost:
        findViewById(android.R.id.empty).setVisibility(View.GONE);
        addItem();
        break;
    case R.id.another_button_id:
        // do something else
        break;
    }

}

答案 1 :(得分:0)

在您的按钮上添加OnClickListener

findViewById(R.id.buttonPost).setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        // do something here
    }
});