[英]How to set Visibility for a float Action menu from another Activity
我创建了一个浮动动作菜单,其中包含一个活动中的浮动动作按钮,我需要在所有活动中显示相同的屏幕,但没有此浮动动作菜单,这是我试图在主活动中设置的Visbily(VIEW.Invisible)新活动向我显示了一个空对象引用错误,我该如何解决
这是mainActivity,其中包含浮动操作菜单
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 Intent中添加一个附加项,然后在活动的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);
// ...
}
}
由于在您的MenuActivity
您必须始终隐藏FloatingActionButton
在MenuActivity
onCreate
尝试以下MenuActivity
:
setContentView(R.layout.activity_take_away);
mainFM = (FloatingActionMenu) findViewById(R.id.mainFAB);
mainFM.setVisibility(View.INVISIBLE);
我认为不需要意图,因为它必须始终隐藏
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.