如何在MenuItem ActionBar中设置按钮的标题

时间:2014-06-09 19:11:44

标签: android menuitem classcastexception

我有一个连接和断开连接的应用程序。这两个状态由一个按钮处理。但是,用户可以清楚地看到,当您单击“连接”时,应用程序必须更改要断开连接的按钮的名称,这与此不同。我试着这样做:

@Override
public boolean onMenuItemSelected(int panel, MenuItem item) {

    showToast(item.getTitle().toString(), Toast.LENGTH_LONG);

    if(item.getTitle().equals("Conectar") && 
            item.getItemId() == (R.id.connectionButton))
    {
        ConnectProcess con = new ConnectProcess(Configuration.this); 
        con.execute();
        item.setTitle(getResources().getString(R.string.disconnect));
    }
    else if(item.getTitle().equals("Desconectar") &&
            item.getItemId() == (R.id.connectionButton))
    {
        LoadCompany loadCompany = new LoadCompany(Configuration.this);
        loadCompany.execute();
        item.setTitle(getResources().getString(R.string.connect));
    }

    return true;
}

当我运行该命令时,抛出以下异常。有谁知道如何解决这个问题?

06-09 15:08:26.140: E/AndroidRuntime(1219): FATAL EXCEPTION: main
06-09 15:08:26.140: E/AndroidRuntime(1219): Process: com.sisteplantbrasil.prisma3mobilev2, PID: 1219
06-09 15:08:26.140: E/AndroidRuntime(1219): java.lang.ClassCastException: com.android.internal.view.menu.ActionMenuItemView cannot be cast to android.view.MenuItem
06-09 15:08:26.140: E/AndroidRuntime(1219):     at com.sisteplantbrasil.prisma3mobilev2.Configuration.setConnectionButtonText(Configuration.java:105)

2 个答案:

答案 0 :(得分:0)

你能告诉我更多你的logCat。通常,创建错误的行是写在它上面。

但如果我理解你的问题,你可以使用" seText()"。

这是一个代码示例:

//
button1=(Button) findViewById(R.id.yourButton);
button1.setOnClickListener(yourListener);
private OnClickListener yourListener = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            button1.setText("Your New Txt");
    };

答案 1 :(得分:0)

更改支持操作栏中的操作栏菜单。然后调用超级方法supportInvalidateOptionsMenu(); onCreateOptionsMenu,您可以在其中更改菜单。还有invalidateOptionsMenu()方法在操作栏的非支持版本上执行相同的操作。

public class Whatever extends ActionBarActivity {
boolean action_connect = false;

public boolean onOptionsItemSelected(MenuItem item) {

    int x = item.getItemId();
    switch (x) {
    case R.id.action_connect:
        action_connect = true;
        super.supportInvalidateOptionsMenu();
        return true;



@Override
public boolean onCreateOptionsMenu(Menu menu) {
    if (action_connect) {
}