2016-03-20 12 views
0

Mit meiner App kann ein Benutzer einen Innenraum eines Wohnmobils entwerfen, indem er Objekte auf einem Grundriss platziert. Ich möchte dann eine andere Aktivität verwenden, um Hyperlinks zu Websites zu zeigen, die die ausgewählten Objekte verkaufen.Wie ändere ich die Sichtbarkeit eines Buttons in einer Aktivität basierend auf der Sichtbarkeit eines ImageView in einer anderen Aktivität?

Ich versuche Intents zu verwenden, um die Sichtbarkeit eines Bildes an die t4shop-Aktivität zu übergeben, und mache dann die relevante Schaltfläche basierend auf diesen Informationen sichtbar.

Die Aktivität mit dem Grundriss ist t4.java und die Aktivität mit den Links ist t4shop.java.

Um die Sichtbarkeit Zustand, in dem t4.java Aktivität zu senden i

setzen
@Override 
    public void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_t4); 

    ImageView Evomotion = (ImageView) findViewById(R.id.evomotion); 

    if (Evomotion.getVisibility() == View.VISIBLE) 
    { 
     Intent intent = new Intent(this, t4shop.class); 
     intent.putExtra("makebuttonvisible", true); 
     startActivity(intent); 
    } 

Um die Sichtbarkeit Zustand zu erhalten und die Sichtbarkeit der Schaltfläche in t4shop.java Ich habe

public Button evobutton; 

    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_t4shop); 
    evobutton = (Button) findViewById(R.id.evobutton); 
    evobutton.setOnClickListener(this); 

    if(getIntent().getBooleanExtra("makebuttonvisible", true)){ 
     evobutton.setVisibility(View.VISIBLE); 
    } 
    else { 
     evobutton.setVisibility(View.INVISIBLE); 
    } 
} 

ändern Gegenwärtig zeigt dieser Code nur den Knopf an, obwohl ich ein paar andere Methoden ausprobiert habe, aber ich bin sehr neu darin und laufe weiter in Kreisen des Scheiterns.

Muss ich irgendetwas anderes im Manifest oder woanders in den Aktivitäten definieren?

Vielen Dank im Voraus,

Steve

+0

zu bekommen. Es sieht so aus, als würde es immer dasselbe tun, je nachdem, wie Sie die Sichtbarkeit von ImageView im Layout definiert haben. Entweder es startet sofort t4shop oder nicht. Das kommt mir komisch vor. –

+0

Setzen Sie "intent.putExtra (" makebuttonvisible ", false);" an irgendeinem Punkt in Ihrem Code? –

Antwort

0

Der zweite Parameter von getBooleanExtra() ist der Standardwert, der, wenn der Schlüssel für die zusätzlichen nicht vorhanden zurückgegeben werden ist. Sie geben nur das Extra weiter, wenn die ImageView innerhalb der ersten Activity sichtbar ist, was bedeutet, dass, wenn es nicht sichtbar ist - kein Wert übergeben wird. Im ersten Szenario getBooleanExtra() wird true zurückgegeben - das ist, was Sie über die Intent übergeben. Im zweiten Szenario wird es immer noch true sein, da Sie überhaupt keinen Wert übergeben haben. Die Lösung wäre, den Wert jedes Mal explizit zu übergeben, auch wenn ImageView nicht sichtbar ist oder der Standardwert false ist.

+0

Hallo Egor, ich habe es mit dem Wert als falsch ausprobiert aber ich habe immer noch keinen Erfolg. Ich möchte, dass die Absicht zu der anderen Aktivität gesendet wird, aber ich möchte die andere Aktivität erst zu einem späteren Zeitpunkt beginnen. Wie kann ich sehen, ob die Absicht übertragen oder empfangen wird? Danke, Steve. –

0

Die if(getIntent().getBooleanExtra("makebuttonvisible", true)) ist immer wahr. Der zweite Parameter "true" ist der Standardwert, wenn das BooleanExtra nicht gefunden werden kann. Also setze es auf falsch statt wahr.

0

versuchen, dies zu verwenden, um den Wert der Sichtbarkeit der Zweck der t4.java Ich verstehe nicht,

if(getIntent().getExtras().getBoolean("makebuttonvisible")){ 
     evobutton.setVisibility(View.VISIBLE); 
    } 
    else { 
     evobutton.setVisibility(View.INVISIBLE); 
    } 
0

ändern

if(getIntent().getBooleanExtra("makebuttonvisible", true)){ 
     evobutton.setVisibility(View.VISIBLE); 
    } 
    else { 
     evobutton.setVisibility(View.INVISIBLE); 
    } 

zu

if(getIntent().getBooleanExtra("makebuttonvisible", false)){ 
     evobutton.setVisibility(View.VISIBLE); 
    } 
    else { 
     evobutton.setVisibility(View.INVISIBLE); 
    } 
Verwandte Themen