Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 按Mainactivity管理按钮可见性当前片段_Java_Android_Android Fragments - Fatal编程技术网

Java 按Mainactivity管理按钮可见性当前片段

Java 按Mainactivity管理按钮可见性当前片段,java,android,android-fragments,Java,Android,Android Fragments,您好,我在创建一个方法时遇到了一个问题,该方法管理片段中存在的按钮的可见性,并从Mainactivity对其进行管理。我尝试使用simple.setVisibility,它返回了null对象错误,因此它没有在下面我指定的条件下隐藏按钮。我向您展示了代码: 主要活动: private StorageReference mStorageRef; public Random mRandom; public TextView mCounterCrd; public ImageView mImgCredi

您好,我在创建一个方法时遇到了一个问题,该方法管理片段中存在的按钮的可见性,并从Mainactivity对其进行管理。我尝试使用simple.setVisibility,它返回了null对象错误,因此它没有在下面我指定的条件下隐藏按钮。我向您展示了代码:

主要活动:

private StorageReference mStorageRef;
public Random mRandom;
public TextView mCounterCrd;
public ImageView mImgCrediti;
int StringCrd;
public RewardedAd rewardedAd;
private com.facebook.ads.InterstitialAd interstitialAd;
public InterstitialAd mAdMobInterstitialAd;
public final int NR_SOUND = 1;
public int mSoundCoin;
public SoundPool mSound;
public ConsentForm form;

@Override
protected void onStart() {
    super.onStart();
}

@SuppressLint("SourceLockedOrientationActivity")
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    setContentView(R.layout.activity_main);


    //Inizializzazione Archiviazione Cloud
    mStorageRef = FirebaseStorage.getInstance().getReference();

    //Image Crediti Init
    mImgCrediti = (ImageView)findViewById(R.id.imgCrediti);

    MobileAds.initialize(this, new OnInitializationCompleteListener() {
        @Override
        public void onInitializationComplete(InitializationStatus initializationStatus) {
        }
    });

    //Costruttore dei suoni SoundPool
    AudioAttributes audioattributi = new AudioAttributes.Builder()
            .setUsage(AudioAttributes.USAGE_MEDIA)
            .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
            .build();
    mSound = new SoundPool.Builder().setAudioAttributes(audioattributi).setMaxStreams(NR_SOUND).build();
    mSoundCoin = mSound.load(getApplicationContext(), R.raw.smb_coin, 1);

    //contatore crediti
    mCounterCrd = findViewById(R.id.counter_crd);
    SharedPreferences sharedPreferences = this.getSharedPreferences("Lettura Crediti", MODE_PRIVATE);
    String Credit = sharedPreferences.getString("Crediti", String.valueOf(StringCrd));
    StringCrd =Integer.parseInt(Credit);
    mCounterCrd.setText(String.valueOf(StringCrd));

    if(StringCrd < 2){
        String CreditZero = mCounterCrd.getText().toString();
        StringCrd =Integer.parseInt(CreditZero);
        mCounterCrd.setText(String.valueOf(StringCrd));
        mImgCrediti.setVisibility(View.VISIBLE);
    }

    if(StringCrd > 1){
        String CreditZero = mCounterCrd.getText().toString();
        StringCrd =Integer.parseInt(CreditZero);
        mCounterCrd.setText(String.valueOf(StringCrd));
        mImgCrediti.setVisibility(View.INVISIBLE);
    }

    if(StringCrd >= 1){
        //Sfondo Random all'apertura
        mRandom = new Random();
        int i = mRandom.nextInt(3);
        if(i==0){
            FragmentManager fm = getSupportFragmentManager();
            FragmentTransaction tx =  fm.beginTransaction();
            fragment_1 fragmentview = new fragment_1();
            tx.replace(R.id.frame_place, fragmentview);
            tx.commit();
        }
        if(i==1){
            FragmentManager fm = getSupportFragmentManager();
            FragmentTransaction tx =  fm.beginTransaction();
            fragment_2 fragmentview = new fragment_2();
            tx.replace(R.id.frame_place, fragmentview);
            tx.commit();
        }
        if(i==2){
            FragmentManager fm = getSupportFragmentManager();
            FragmentTransaction tx =  fm.beginTransaction();
            fragment_3 fragmentview = new fragment_3();
            tx.replace(R.id.frame_place, fragmentview);
            tx.commit();
        }
    }

    if(StringCrd >= 1){
        String clickZero = mCounterCrd.getText().toString();
        StringCrd =Integer.parseInt(clickZero);
        StringCrd--;
        mCounterCrd.setText(String.valueOf(StringCrd));
    }

    //Funzione se i crediti < 1
    if(StringCrd == 0 ){
        String clickZero = mCounterCrd.getText().toString();
        StringCrd =Integer.parseInt(clickZero);
        StringCrd = 0;
        mCounterCrd.setText(String.valueOf(StringCrd));
        FragmentManager fm = getSupportFragmentManager();
        FragmentTransaction tx =  fm.beginTransaction();
        fragment_2 fragmentview = new fragment_2();
        tx.replace(R.id.frame_place, fragmentview);
        tx.commit();
    }

    loadVideo();
    ceckForCosent();
}

@SuppressLint("SourceLockedOrientationActivity")
public void ClickUP(View view) {
    //Vibration control
    Vibrator vib = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
    assert vib != null;
    vib.vibrate(30);

    //Funzione della Guida
    if(StringCrd < 2){
        String CreditZero = mCounterCrd.getText().toString();
        StringCrd =Integer.parseInt(CreditZero);
        mCounterCrd.setText(String.valueOf(StringCrd));
        mImgCrediti.setVisibility(View.VISIBLE);
    }
    if(StringCrd > 1){
        String CreditZero = mCounterCrd.getText().toString();
        StringCrd =Integer.parseInt(CreditZero);
        mCounterCrd.setText(String.valueOf(StringCrd));
        mImgCrediti.setVisibility(View.INVISIBLE);
    }

    if(StringCrd > 1){

        //Funzione Decrementa Crediti
        String Credit = mCounterCrd.getText().toString();
        StringCrd =Integer.parseInt(Credit);
        StringCrd--;
        mCounterCrd.setText(String.valueOf(StringCrd));

        //Scelta Sfondo click su avanti
        mRandom = new Random();
        int i = mRandom.nextInt(3);
        if(i==0){
            FragmentManager fm = getSupportFragmentManager();
            FragmentTransaction tx =  fm.beginTransaction();
            fragment_1 fragmentview = new fragment_1();
            tx.replace(R.id.frame_place, fragmentview);
            tx.commit();
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
        }
        if(i==1){
            FragmentManager fm = getSupportFragmentManager();
            FragmentTransaction tx =  fm.beginTransaction();
            fragment_2 fragmentview = new fragment_2();
            tx.replace(R.id.frame_place, fragmentview);
            tx.commit();
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
        }
        if(i==2){
            FragmentManager fm = getSupportFragmentManager();
            FragmentTransaction tx =  fm.beginTransaction();
            fragment_3 fragmentview = new fragment_3();
            tx.replace(R.id.frame_place, fragmentview);
            tx.commit();
            setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
        }
    }

    //Funzione se i crediti < 1
    if(StringCrd == 1 ){
        String CreditZero = mCounterCrd.getText().toString();
        StringCrd =Integer.parseInt(CreditZero);
        StringCrd = 1;
        mCounterCrd.setText(String.valueOf(StringCrd));
    }

    if(StringCrd == 0 ){
        String CreditZero = mCounterCrd.getText().toString();
        StringCrd =Integer.parseInt(CreditZero);
        StringCrd = 0;
        mCounterCrd.setText(String.valueOf(StringCrd));
    }
}

public void loadInterstitialConsent(){

}

public void loadInterstitialNonConsent(){

}

public void onResume() {
    super.onResume();

    //Funzione Visible della Guida
    if(StringCrd < 2){
        String CreditZero = mCounterCrd.getText().toString();
        StringCrd =Integer.parseInt(CreditZero);
        mCounterCrd.setText(String.valueOf(StringCrd));
        mImgCrediti.setVisibility(View.VISIBLE);
    }
    if(StringCrd > 1){
        String CreditZero = mCounterCrd.getText().toString();
        StringCrd =Integer.parseInt(CreditZero);
        mCounterCrd.setText(String.valueOf(StringCrd));
        mImgCrediti.setVisibility(View.INVISIBLE);
    }
}
public void onPause() {
    super.onPause();

    //Funzione Visible della Guida
    if(StringCrd < 2){
        String CreditZero = mCounterCrd.getText().toString();
        StringCrd =Integer.parseInt(CreditZero);
        mCounterCrd.setText(String.valueOf(StringCrd));
        mImgCrediti.setVisibility(View.VISIBLE);
    }
    if(StringCrd > 1){
        String CreditZero = mCounterCrd.getText().toString();
        StringCrd =Integer.parseInt(CreditZero);
        mCounterCrd.setText(String.valueOf(StringCrd));
        mImgCrediti.setVisibility(View.INVISIBLE);
    }
}

@Override
public void onBackPressed() {
    new AlertDialog.Builder(this)
            .setMessage(R.string.Uscita_App)
            .setCancelable(false)
            .setPositiveButton(R.string.Risposta_Uscita_Si, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    MainActivity.super.onBackPressed();
                }
            })
            .setNegativeButton(R.string.Risposta_Uscita_No, null)
            .show();
}

@Override
public void decrementa() {
    //Vibration control
    Vibrator vib = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
    assert vib != null;
    vib.vibrate(30);

    //Funzione Decrementa Crediti sul button download
    if(StringCrd >= 1){
        String Credit = mCounterCrd.getText().toString();
        StringCrd = Integer.parseInt(Credit);
        StringCrd--;
        mCounterCrd.setText(String.valueOf(StringCrd));
    }
    //Funzione se i crediti < 0
    if(StringCrd < 1 ){
        String CreditZero = mCounterCrd.getText().toString();
        StringCrd = Integer.parseInt(CreditZero);
        StringCrd = 0;
        mCounterCrd.setText(String.valueOf(StringCrd));
    }

    if (mAdMobInterstitialAd.isLoaded()) {
        mAdMobInterstitialAd.show();
    }else{
        interstitialAd.show();
    }

    //Funzione Visible della Guida
    if(StringCrd < 2){
        String CreditZero = mCounterCrd.getText().toString();
        StringCrd =Integer.parseInt(CreditZero);
        mCounterCrd.setText(String.valueOf(StringCrd));
        mImgCrediti.setVisibility(View.VISIBLE);
    }
    if(StringCrd > 1){
        String CreditZero = mCounterCrd.getText().toString();
        StringCrd =Integer.parseInt(CreditZero);
        mCounterCrd.setText(String.valueOf(StringCrd));
        mImgCrediti.setVisibility(View.INVISIBLE);
    }
}

public void ClickVideo(View view) {
    //Vibration control
    Vibrator vib = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
    assert vib != null;
    vib.vibrate(30);

    //Video a Premio
    if(this.rewardedAd.isLoaded()) {
        RewardedAdCallback callback = new RewardedAdCallback() {
            @Override
            public void onUserEarnedReward(@NonNull RewardItem rewardItem) {
                //Aggiunta di crediti
                String Credit = mCounterCrd.getText().toString();
                StringCrd = Integer.parseInt(Credit);
                int coins = 2;
                StringCrd += coins;
                mCounterCrd.setText(String.valueOf(StringCrd));
                //Toast nome Crediti
                Toast toast = Toast.makeText(MainActivity.this, "2 Rapp Coins" , Toast.LENGTH_LONG);
                toast.setGravity(Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0,200);
                toast.show();
                //Play Sound
                mSound.play(mSoundCoin,0.5f, 0.5f, 1, 0, 1.0f);
            }

            @Override
            public void onRewardedAdOpened() {
                super.onRewardedAdOpened();
                loadVideo();
            }

            @Override
            public void onRewardedAdClosed() {
                super.onRewardedAdClosed();
                RewardedAdClosed();
            }

            @Override
            public void onRewardedAdFailedToShow(int i) {
                super.onRewardedAdFailedToShow(i);
            }
        };
        this.rewardedAd.show(this, callback);

    } else {
    }

    //Funzione Visible della Guida
    if(StringCrd < 2){
        String CreditZero = mCounterCrd.getText().toString();
        StringCrd =Integer.parseInt(CreditZero);
        mCounterCrd.setText(String.valueOf(StringCrd));
        mImgCrediti.setVisibility(View.VISIBLE);
    }
    if(StringCrd > 1){
        String CreditZero = mCounterCrd.getText().toString();
        StringCrd =Integer.parseInt(CreditZero);
        mCounterCrd.setText(String.valueOf(StringCrd));
        mImgCrediti.setVisibility(View.INVISIBLE);
    }
}

private void ceckForCosent(){
    ConsentInformation consentInformation = ConsentInformation.getInstance(MainActivity.this);
    String[] publisherIds = {"pub-9034900799287221"};
    consentInformation.requestConsentInfoUpdate(publisherIds, new ConsentInfoUpdateListener() {
        @Override
        public void onConsentInfoUpdated(ConsentStatus consentStatus) {
            switch (consentStatus){
                case PERSONALIZED:
                    showPersonalizedAds();
                    break;
                case NON_PERSONALIZED:
                    showNonPersonalizedAds();
                    break;
                case UNKNOWN:
                    if(ConsentInformation.getInstance(getBaseContext()).isRequestLocationInEeaOrUnknown()){
                        requestConsent();
                    }else{
                        showPersonalizedAds();
                    }
                    break;
                default:
                    break;
            }
        }

        @Override
        public void onFailedToUpdateConsentInfo(String reason) {
        }
    });
}

private void requestConsent() {
    URL privacyUrl = null;
    try {
        // TODO: Replace with your app's privacy policy URL.
        privacyUrl = new URL("https://www.google.com/policies/technologies/partner-sites/");
    } catch (MalformedURLException e) {
        e.printStackTrace();
        // Handle error.
    }
     form = new ConsentForm.Builder(MainActivity.this, privacyUrl)
            .withListener(new ConsentFormListener() {
                @Override
                public void onConsentFormLoaded() {
                    // Consent form loaded successfully.
                    showForm();
                }

                @Override
                public void onConsentFormOpened() {
                    // Consent form was displayed.
                }

                @Override
                public void onConsentFormClosed(
                        ConsentStatus consentStatus, Boolean userPrefersAdFree) {
                    // Consent form was closed.
                }

                @Override
                public void onConsentFormError(String errorDescription) {
                    // Consent form error.
                }
            })
            .withPersonalizedAdsOption()
            .withNonPersonalizedAdsOption()
            .withAdFreeOption()
            .build();
     form.load();
}

public void showPersonalizedAds() {
    loadInterstitialConsent();
}

public void showNonPersonalizedAds() {
    loadInterstitialNonConsent();
}

public Bundle getNonPersonalizedAdsBundle(){
    Bundle extras = new Bundle();
    extras.putString("npa","1");
    return extras;
}

public void showForm() {
    if(form == null){
    }
    if(form != null){
        form.show();
    }else{
    }
}

@Override
public void onDestroy() {
    if (interstitialAd != null) {
        interstitialAd.destroy();
    }
    super.onDestroy();
    //Salvataggio Crediti nel metodo On Destroy
    SharedPreferences sharedPreferences = this.getSharedPreferences("Lettura Crediti", MODE_PRIVATE);
    String Credit = mCounterCrd.getText().toString();
    sharedPreferences.edit().putString("Crediti", Credit).apply();

    //Funzione Visible della Guida
    if(StringCrd < 2){
        String CreditZero = mCounterCrd.getText().toString();
        StringCrd =Integer.parseInt(CreditZero);
        mCounterCrd.setText(String.valueOf(StringCrd));
        mImgCrediti.setVisibility(View.VISIBLE);
    }
    if(StringCrd > 1){
        String CreditZero = mCounterCrd.getText().toString();
        StringCrd =Integer.parseInt(CreditZero);
        mCounterCrd.setText(String.valueOf(StringCrd));
        mImgCrediti.setVisibility(View.INVISIBLE);
    }
}
在if()函数中,但它不起作用,因为它告诉我正在调用一个虚拟方法或对象为Null


为此,我问您是否有一种方法来管理fragment by MainActivity中按钮的可见性,希望您能帮助我谢谢

似乎您正在尝试从活动访问dwn_1?但那个观点属于你的片段。这就是为什么调用时会得到空对象:

findViewById(R.id.dwn_1)

你可以这样做

class MainActivity {
    YourFragment fragment:

    protected void onCreate(Bundle savedInstanceState) {
        //SomeCode
        fragment = new YourFragment()
        //SomeCode
    } 

    private void hideView(){
        fragment.hideImage()
    }
}
在你的片段中

class YourFragment {
    private ImageView mbtnCrd;

    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        //Some code
        bntDwn_1 = (ImageView) getActivity().findViewById(R.id.dwn_1);
    }

    public void hideImage(){
        bntDwn_1.setVisibility(View.GONE):
    }
}

然后,只要您想隐藏该视图,就调用hideView()方法。

如果您想从活动中隐藏位于片段中的Btn,您可以设置广播

在“活动”中,当您要隐藏Btn时:

    Intent hideBtn = new Intent("hide_event");
    sendBroadcast(hideBtn);
在你的片段中,听这段广播

private BroadcastReceiver receiver;

public void onStart() {
    super.onStart();
    receiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
             myBtn.setVisibility(View.INVISIBLE)
        }
    };
    getActivity().registerReceiver(receiver, new IntentFilter("hide_event"));
}

@Override
public void onStop() {
        super.onStop();
        getActivity().unregisterReceiver(receiver);
    }

事实上,我想知道采用什么方法来调用MainActivity中片段的按钮dwn_1,谢谢
class YourFragment {
    private ImageView mbtnCrd;

    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        //Some code
        bntDwn_1 = (ImageView) getActivity().findViewById(R.id.dwn_1);
    }

    public void hideImage(){
        bntDwn_1.setVisibility(View.GONE):
    }
}
    Intent hideBtn = new Intent("hide_event");
    sendBroadcast(hideBtn);
private BroadcastReceiver receiver;

public void onStart() {
    super.onStart();
    receiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
             myBtn.setVisibility(View.INVISIBLE)
        }
    };
    getActivity().registerReceiver(receiver, new IntentFilter("hide_event"));
}

@Override
public void onStop() {
        super.onStop();
        getActivity().unregisterReceiver(receiver);
    }