2016-08-13 41 views
8

To pytanie mówi wszystko. Wyobraźmy sobie dwie aktywności: "Aktywność A" i "Aktywność B". "Aktywność A" zawiera pole wyboru, gdy zaznaczony przycisk powinien być wyświetlany w polu "Czynność B", gdy odznaczono przycisk, który powinien być ukryty w polu "Aktywność B"Android zaznaczone pole wyboru w jednym działaniu, a następnie przycisk pojawia się w innej aktywności

poniżej jest głównym programem

public class MainActivity extends ActionBarActivity { 

    private BubblesManager bubblesManager; 
    private boolean isCheckedValue; 


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

     initializeBubblesManager(); 


     final Button add = (Button) findViewById(R.id.add); 
     add.setOnClickListener(new View.OnClickListener(){ 
      @Override 
      public void onClick(View v) { 
       addNewBubble(); 
       add.setEnabled(false); 
      } 
     }); 

     CheckBox checkBox = (CheckBox)findViewById(R.id.add_fb); 
     checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
      @Override 
      public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 

       isCheckedValue = isChecked; 

       Intent intent = new Intent(MainActivity.this, PopUpWindow.class); 
       intent.putExtra("yourBoolName", isCheckedValue); 


      } 
     }); 



    } 
private void addNewBubble() { 
     BubbleLayout bubbleView = (BubbleLayout)LayoutInflater.from(MainActivity.this).inflate(R.layout.bubble_layout, null); 
     bubbleView.setOnBubbleRemoveListener(new BubbleLayout.OnBubbleRemoveListener() { 
      @Override 
      public void onBubbleRemoved(BubbleLayout bubble) { 
       finish(); 
       System.exit(0); 
      } 
     }); 
     bubbleView.setOnBubbleClickListener(new BubbleLayout.OnBubbleClickListener() { 

      @Override 
      public void onBubbleClick(BubbleLayout bubble) { 
       Intent in = new Intent(MainActivity.this, PopUpWindow.class); 
       startActivity(in); 
      } 
     }); 
     bubbleView.setShouldStickToWall(true); 
     bubblesManager.addBubble(bubbleView, 60, 20); 
    } 

poniżej znajduje się obok aktywność aka „działalność B”

public class PopUpWindow extends Activity { 

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


    DisplayMetrics dm = new DisplayMetrics(); 
    getWindowManager().getDefaultDisplay().getMetrics(dm); 

    int width = dm.widthPixels; 
    int height = dm.heightPixels; 

    getWindow().setLayout((int)(width*.8),(int)(height*.6)); 

    Boolean yourBool = getIntent().getBooleanExtra("yourBoolName",false); 
    Button fbbutton1 = (Button)findViewById(R.id.fbbutton1); 
    if(yourBool){ 
      //For Displaying Button 
     fbbutton1.setVisibility(View.VISIBLE); 
    } 


} 

poniżej znajduje się kod XML dla przycisku chcę pokazać podczas wyboru kliknięciu

<Button 
     android:visibility="gone" 
     android:id="@+id/fbbutton1" 
     android:onClick="button" 
     android:background="@drawable/fbcircle" 
     android:layout_width="50dp" 
     android:layout_height="50dp" /> 
+0

nie widzę żadnego problemu związanego z kodem, to możliwe, że zrobił kilka zmian w kodzie a studio po prostu dał ci starą wersję swojego projekt, spróbuj oczyścić i uruchom lub wyczyść projekt i uruchom swoją aplikację –

+0

@PavneetSingh bro, nie ma błędów w aplikacji. pole wyboru nie działa, nawet jeśli pole wyboru "Aktywność A" nie zostanie kliknięte, przycisk "Aktywność B" pokazuje, że nic nie poszło nie tak –

+0

Ten kod nie ma żadnego sensu. Przechowujesz wartość 'yourBoolName' w jednym' intencie' i rozpoczynasz swoją działalność od innej 'intencji'. Oczywiście to nie zadziała. –

Odpowiedz

3
public class MainActivity extends ActionBarActivity { 
private BubblesManager bubblesManager; 
private boolean isCheckedValue; 


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

    initializeBubblesManager(); 


    final Button add = (Button) findViewById(R.id.add); 
    add.setOnClickListener(new View.OnClickListener(){ 
     @Override 
     public void onClick(View v) { 
      addNewBubble(); 
      add.setEnabled(false); 
     } 
    }); 

    CheckBox checkBox = (CheckBox)findViewById(R.id.add_fb); 
    checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 

      isCheckedValue = isChecked; 
// un-comment this code if you want to go to second activity when check change 
// 
//    Intent intent = new Intent(MainActivity.this, PopUpWindow.class); 
//    intent.putExtra("yourBoolName", isCheckedValue); 
// startActivity(intent); 
     } 
    }); 

} 
private void addNewBubble() { 
     BubbleLayout bubbleView = (BubbleLayout)LayoutInflater.from(MainActivity.this).inflate(R.layout.bubble_layout, null); 
     bubbleView.setOnBubbleRemoveListener(new BubbleLayout.OnBubbleRemoveListener() { 
      @Override 
      public void onBubbleRemoved(BubbleLayout bubble) { 
       finish(); 
       System.exit(0); 
      } 
     }); 
     bubbleView.setOnBubbleClickListener(new BubbleLayout.OnBubbleClickListener() { 

      @Override 
      public void onBubbleClick(BubbleLayout bubble) { 
       Intent in = new Intent(MainActivity.this, PopUpWindow.class); 
      in.putExtra("yourBoolName", isCheckedValue); 
       startActivity(in); 
      } 
     }); 
     bubbleView.setShouldStickToWall(true); 
     bubblesManager.addBubble(bubbleView, 60, 20); 
    } 
} 


    public class PopUpWindow extends Activity { 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

setContentView(R.layout.activity_pop_up_window); 


DisplayMetrics dm = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(dm); 

int width = dm.widthPixels; 
int height = dm.heightPixels; 

getWindow().setLayout((int)(width*.8),(int)(height*.6)); 

Boolean yourBool = getIntent().getBooleanExtra("yourBoolName",false); 
Button fbbutton1 = (Button)findViewById(R.id.fbbutton1); 
if(yourBool){ 
     //For Displaying Button 
    fbbutton1.setVisibility(View.VISIBLE); 
    } 


} 
} 
+0

bro, próbowałem nawet tej logiki wcześniej, ale tak naprawdę nie działało.Kiedy załadowałeś próbowałem, ale nadal to nie działa dobrze. problem jest mały, ale nie wiem gdzie to jest @PavneetSighn i dodałem androida: visibility = "gone" w xml czy wpłynęłoby to na kod? –

+0

Powiedz mi, jakie jest bieżące zachowanie twojego kodu i co jest z nim nie tak, –

+0

bro, Właśnie zrobiłem to, co powiedziałeś, zaktualizowałem stary kod na nowy, a obecne zachowanie jest nawet jeśli zaznaczone jest pole wyboru, a nie przycisk jest pokazane @PavneetSingh –

0

Użyj "boolean isChecked" z "Activity A" w tym polu stanu zapisu, przekazuj dalej "Activity B", Za pomocą tej logicznej ustawić widoczność widoku w "Activity B".

+0

Właśnie edytowałem cały kod i zaktualizowałem go powyżej, może to zrobić raz, ponieważ wystąpił błąd w zmianach, które wprowadziłem @Hardik Kubavat –

+0

przypisać wartość zmiennej przed przekazaniem jej innej aktywności. "IsCheckedValue = isChecked;" przed waszym powołaniem Intent. –

3

wyślij wartość boolowską z pakietem intencyjnym w działaniu B. jeśli jest prawdziwy przycisk show lub ukryj go.

//global value 
    private boolean isCheckedValue; 


    CheckBox checkBox = (CheckBox)findViewById(R.id.chkbox1); 
      checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
       @Override 
       public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 

    isCheckedValue = isChecked; //first set value then assign to boolean extra. 

Intent intent = new Intent(MainActivity.this, PopUpWindow.class); 
      intent.putExtra("yourBoolName", isCheckedValue); 
      startActivity(intent); 



       } 
      }); 
     } 

wysłać z zamiarem

Intent intent = new Intent(this, AcitivityB.class); 
intent.putExtra("yourBoolName", isCheckedValue); 
startActivity(intent) 

poradzić na acitivity B

Boolean yourBool = getIntent().getExtras().getBoolean("yourBoolName"); 

if(yourBool){ 
//display button 
} 
else{ 
//hide button 
} 
+0

Właśnie edytowałem kompletny kod i zaktualizowałem go powyżej, może to zrobić raz, ponieważ wystąpił błąd w zmianach, które zrobiłem –

+0

ustawiasz wartość isCheck Value, a następnie ustawiasz wartość. zobacz moją zaktualizowaną odpowiedź. @GladwinJames – KDeogharkar

+0

'java.lang.RuntimeException: Nie można rozpocząć działania ComponentInfo {com.txusballesteros.bubbles/com.txusballesteros.bubbles.PopUpWindow}: java.lang.NullPointerException: Próba wywołania metody wirtualnej' boolean android.os.Bundle. getBoolean (java.lang.String) "na referencji o wartości zerowej " bro nadal ten błąd jest: "(@KDeogharkar –

0

Zmień swoją aktywność lubię tego 'A':

public class MainActivity extends ActionBarActivity { 

private BubblesManager bubblesManager; 
private boolean isCheckedValue; 
private Intent intent; 

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

    initializeBubblesManager(); 


    final Button add = (Button) findViewById(R.id.add); 
    add.setOnClickListener(new View.OnClickListener(){ 
     @Override 
     public void onClick(View v) { 
      addNewBubble(); 
      add.setEnabled(false); 
     } 
    }); 
    intent = new Intent(MainActivity.this, PopUpWindow.class); 
    CheckBox checkBox = (CheckBox)findViewById(R.id.add_fb); 
    checkBox.setOnCheckedChangeListener (newCompoundButton.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 

      isCheckedValue = isChecked; 


      intent.putExtra("yourBoolName", isCheckedValue); 


     } 
    }); 



} 
    private void addNewBubble() { 
    BubbleLayout bubbleView = (BubbleLayout)LayoutInflater.from(MainActivity.this).inflate(R.layout.bubble_layout, null); 
    bubbleView.setOnBubbleRemoveListener(new BubbleLayout.OnBubbleRemoveListener() { 
     @Override 
     public void onBubbleRemoved(BubbleLayout bubble) { 
      finish(); 
      System.exit(0); 
     } 
    }); 
    bubbleView.setOnBubbleClickListener(new BubbleLayout.OnBubbleClickListener() { 

     @Override 
     public void onBubbleClick(BubbleLayout bubble) { 

      startActivity(intent); 
     } 
    }); 
    bubbleView.setShouldStickToWall(true); 
    bubblesManager.addBubble(bubbleView, 60, 20); 
} 

I dostać pakiet dodatkową wartość aktywności „B”

boolean checkedStatus= getIntent().getBooleanExtra("yourBoolName",false); 
if(checkedStatus){ 
    // Do your job here 
}else{ 
}