簡體   English   中英

如何設置另一個活動中的浮動操作菜單的可見性

[英]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您必須始終隱藏FloatingActionButtonMenuActivity 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM