Java 按Mainactivity管理按钮可见性当前片段
您好,我在创建一个方法时遇到了一个问题,该方法管理片段中存在的按钮的可见性,并从Mainactivity对其进行管理。我尝试使用simple.setVisibility,它返回了null对象错误,因此它没有在下面我指定的条件下隐藏按钮。我向您展示了代码: 主要活动: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
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);
}