Java 如何从其他活动中设置浮动操作菜单的可见性

Java 如何从其他活动中设置浮动操作菜单的可见性,java,android,Java,Android,我创建了一个浮动动作菜单,其中包含活动中的浮动动作按钮, 我只需要在另一个活动中显示相同的屏幕,但没有主活动中的浮动操作菜单 我尝试在新活动中设置Visibily(VIEW.Invisible),它向我显示一个空对象引用错误。我如何解决这个问题 这是包含浮动操作菜单的主活动 public class MenuActivity extends AppCompatActivity { FloatingActionButton SplitCheck, HoldItem, VoidItem, C

我创建了一个浮动动作菜单,其中包含活动中的浮动动作按钮, 我只需要在另一个活动中显示相同的屏幕,但没有主活动中的浮动操作菜单 我尝试在新活动中设置Visibily(VIEW.Invisible),它向我显示一个空对象引用错误。我如何解决这个问题

这是包含浮动操作菜单的主活动

public class MenuActivity extends AppCompatActivity {
    FloatingActionButton SplitCheck, HoldItem, VoidItem, ChangeNoOfCovers, Payment;
    public static FloatingActionMenu mainFM;
 @Override
    protected void onCreate(Bundle savedInstanceState) {
            mainFM = (FloatingActionMenu) findViewById(R.id.mainFAB);
        SplitCheck = (FloatingActionButton) findViewById(R.id.splitCheck);
        HoldItem = (FloatingActionButton) findViewById(R.id.holdItem);
        VoidItem = (FloatingActionButton) findViewById(R.id.voidItem);
        ChangeNoOfCovers = (FloatingActionButton) findViewById(R.id.changeNoCover);
        Payment = (FloatingActionButton) findViewById(R.id.paymentID);

        mainFM.setClosedOnTouchOutside(true);
...........................
.................
}
}
这是我的第二项活动

package abtech.waiteriano.com.waitrer;

import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.v7.app.AppCompatActivity;
import android.view.View;

import com.github.clans.fab.FloatingActionMenu;

public class TakeAwayActivity extends AppCompatActivity {

    private FloatingActionButton fabNew;
    private android.support.v7.widget.Toolbar toolbar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_take_away);
        fabNew = (FloatingActionButton) findViewById(R.id.newOrderTa);
        final FloatingActionMenu mainFM = (FloatingActionMenu) findViewById(R.id.mainFAB);
        final boolean showButton = getIntent().getBooleanExtra("HIDE_FAB" , false);
        mainFM.setVisibility(showButton ? View.VISIBLE : View.INVISIBLE);

//        MenuActivity.mainFM.setVisibility(View.INVISIBLE);


        fabNew.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                final Intent i = new Intent(TakeAwayActivity.this, MenuActivity.class);
                i.putExtra("HIDE_FAB", true);
                startActivity(i);

            }
        });
    }
}

您不能将静态变量用于此类用途

在您的特定情况下,您试图在执行onCreate之前访问
MenuActivity.mainFM
,因此必须为null

好的方法是在startActivity意图中添加一个额外的按钮,然后在活动的onCreate方法中,获取这个额外的按钮并显示或不显示按钮

final Intent intent = new Intent(TakeAwayActivity.this, MenuActivity.class);
intent.putExtra(MenuActivity.EXTRA_SHOW_BUTTON_KEY, true);
startActivity(intent);
然后在您的活动中:

public class MenuActivity extends AppCompatActivity {

    public static final String EXTRA_SHOW_BUTTON_KEY = "EXTRA_SHOW_BUTTON_KEY";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_layout);

        final FloatingActionMenu mainFM = (FloatingActionMenu) findViewById(R.id.mainFAB);
        final boolean showButton = getIntent().getBooleanExtra(EXTRA_SHOW_BUTTON_KEY , false);
        mainFM.setVisibility(showButton ? View.VISIBLE : View.INVISIBLE);

        // ...
    }
}

因为在您的
菜单活动中
必须始终隐藏
浮动操作按钮
请在
菜单活动中尝试此操作
onCreate

   setContentView(R.layout.activity_take_away);
    mainFM = (FloatingActionMenu) findViewById(R.id.mainFAB);
    mainFM.setVisibility(View.INVISIBLE);

我认为不需要意图,因为它必须总是隐藏的

你能链接一些代码吗?@Anders Kink okSure@Anders纠结请检查我的编辑:MenuActivity.mainFM.setVisibility(View.Gone)@Anders Kink我试过了,但不管用谢谢,但你能给我举个例子吗?我试过你的例子,但它显示的错误与“由以下原因引起的:java.lang.NullPointerException:尝试调用空对象引用上的虚拟方法'void com.github.clans.fab.FloatingActionMenu.setVisibility(int)'相同”我认为您将代码放在了错误的活动中,应该放在按钮所在的活动中。我想是活动。好的,太好了!有关更多功能,请忽略静态