2017-01-26 6 views
0

Я делаю приложение, где он принимает двух типов пользователей. «Зрители» и «Подрядчики». Я сделал два переключателя для каждой опции. Я хочу знать три вещи: Как активировать кнопку при выборе переключателя. Как инактивировать кнопку при отсутствии переключателя. Наконец, как сделать оба переключателя посылать вам уникальную активность в зависимости от выбранной опции. Например, я выбираю «Подрядчик», затем нажимаю кнопку, чтобы продолжить, он отправит меня к уникальному макету, который подключается к этому переключателю.Как сделать кнопку переключателя на кнопке

Вот мой XML:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
android:id="@+id/b" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="@drawable/gradient_background" 
tools:context="com.devteam.abire.abire.b"> 

<android.support.v7.widget.CardView 
    app:cardElevation="15dp" 
    android:layout_centerHorizontal="true" 
    android:layout_centerVertical="true" 
    android:layout_width="300dp" 
    android:layout_height="345dp"> 

</android.support.v7.widget.CardView> 

<android.support.v7.widget.CardView 
    android:layout_centerHorizontal="true" 
    android:layout_centerVertical="true" 
    app:cardElevation="20dp" 
    android:layout_width="320dp" 
    android:layout_height="320dp"> 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <View 
      android:background="#141526" 
      android:layout_width="match_parent" 
      android:layout_height="50dp"/> 

     <ImageView 
      android:id="@+id/abire_app_icon_v2" 
      android:layout_marginTop="21dp" 
      android:elevation="45dp" 
      android:layout_centerHorizontal="true" 
      android:background="@drawable/abire_logo_v1" 
      android:layout_width="55dp" 
      android:layout_height="55dp" /> 

     <TextView 
      android:layout_marginStart="20dp" 
      android:id="@+id/register_as_text" 
      android:layout_marginTop="10dp" 
      android:text="Register As A..." 
      android:textColor="#141526" 
      android:layout_below="@+id/abire_app_icon_v2" 
      android:textSize="28sp" 
      android:textAlignment="textStart" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" /> 

     <RadioButton 
      android:layout_marginStart="20dp" 
      android:textSize="22sp" 
      android:textColor="#141526" 
      android:id="@+id/viewer_radioBtn" 
      android:text="Viewer" 
      android:layout_marginTop="18dp" 
      android:layout_below="@+id/register_as_text" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" /> 

     <RadioButton 
      android:layout_marginStart="20dp" 
      android:textSize="22sp" 
      android:textColor="#141526" 
      android:id="@+id/contractor_radioBtn" 
      android:text="Contractor" 
      android:layout_marginTop="18dp" 
      android:layout_below="@+id/viewer_radioBtn" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" /> 

     <Button 

      android:id="@+id/continueBtn" 
      android:textSize="18sp" 
      android:text="CONTINUE" 
      android:textColor="#fff" 
      android:layout_marginTop="25dp" 
      android:layout_centerHorizontal="true" 
      android:layout_below="@+id/contractor_radioBtn" 
      android:background="@drawable/ripple_maroon" 
      android:layout_width="250dp" 
      android:layout_height="38dp" /> 

    </RelativeLayout> 

</android.support.v7.widget.CardView> 


</RelativeLayout> 

Вот мой Java:

package com.devteam.abire.abire; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 

public class b extends AppCompatActivity { 

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

ответ

0

Если вы хотите сделать только одну из кнопок интерактивных в то время, вы должны поставить радиокнопки в радио-группах

<RadioGroup xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical"> 
     <RadioButton 
      android:layout_marginStart="20dp" 
      android:textSize="22sp" 
      android:textColor="#141526" 
      android:id="@+id/viewer_radioBtn" 
      android:onCLick="onRadioButtonClicked" 
      android:text="Viewer" 
      android:layout_marginTop="18dp" 
      android:layout_below="@+id/register_as_text" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" /> 

     <RadioButton 
      android:layout_marginStart="20dp" 
      android:textSize="22sp" 
      android:textColor="#141526" 
      android:id="@+id/contractor_radioBtn" 
      android:onCLick="onRadioButtonClicked" 
      android:text="Contractor" 
      android:layout_marginTop="18dp" 
      android:layout_below="@+id/viewer_radioBtn" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" /> 
</RadioGroup> 

<Button 
      android:id="@+id/continueBtn" 
      android:textSize="18sp" 
      android:text="CONTINUE" 
      android:textColor="#fff" 
      android:layout_marginTop="25dp" 
      android:layout_centerHorizontal="true" 
      android:layout_below="@+id/contractor_radioBtn" 
      android:onCLick="onButtonClicked" 
      android:background="@drawable/ripple_maroon" 
      android:layout_width="250dp" 
      android:layout_height="38dp" /> 

    package com.devteam.abire.abire; 

    import android.support.v7.app.AppCompatActivity; 
    import android.os.Bundle; 

    public class b extends AppCompatActivity { 

    private String mClickedRadioButton; 

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

    public void onRadioButtonClicked(View view) { 
     // Is the button now checked? 
      boolean checked = ((RadioButton) view).isChecked(); 

     // Check which radio button was clicked 
     switch(view.getId()) { 
      case R.id.viewer_radioBtn": 
        if (checked) 
         sClickedRadioButton = "viewer"; 
        break; 
       case R.id.contractor_radioBtn" 
        if (checked) 
         sClickedRadioButton; = "contractor";  
       break; 
      } 
    } 

    public void onButtonClicked(View v){ 

     if(sClickedRadioButton == null){ 
      return; 
     }else if(sClickedRadioButton.equals("viewer")){ 
      //Do something when view is checked 
     }else if(sClickedRadioButton.equals("contractor"){ 
      // Do something when contractor is checked 
     } 
} 
0

Во-первых, это хорошо использовать RadioGroup вместо кнопки радио, если у вас есть кнопки кратной.

Для «» Как активировать кнопку при выборе переключателя. Как отключить кнопку при отсутствии переключателя. », создайте ссылки для кнопок и переключателей в действии. Затем, если первый переключатель установлен, кнопка на отключение:

button.setEnabled(false); 

Для «Наконец, как сделать оба радиокнопок отправить вас к уникальной деятельности в зависимости от выбранного варианта.», При использовании использование RadioGroup:

public void onCheckedChanged(RadioGroup arg0, int arg1) { 
    radioButton = (RadioButton) findViewById(radioGroup.getCheckedRadioButtonId();); 

if (radioButton.isChecked()) { 
    text=radioButton.getText().toString(); 
    if (text.equals("radiobtn1Option")) { 
    //TODO : start new activity 
    Intent intent = new Intent(this, YourNextSCreen.class); 
      startActivity(intent); 

    } if (text.equals("radiobtn2Option")) { 
    //TODO 
    } else { 
    //TODO 
    } 
} 

} });

+0

что делает '.setEnabld' делать? Я слышал его' .setEnabled' правильно? – W4R10CK

+0

Да, это была опечатка. Спасибо, изменил его ..! –