检查页面片段中的单选按钮

时间:2017-04-08 12:49:55

标签: android

我有一个按钮,当我点击它时我想要去页面片段检查单选按钮,例如,如果它是一个问候,那么单词hello将打印在页面MainActivity中的textview上

页面片段

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.java.frag.BlankFragment">




        <RadioGroup
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >

            <RadioButton
                android:text="nice to meet you"
                android:textStyle="bold"
                android:layout_gravity="center"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/radioButton"
                android:layout_weight="1" />

            <RadioButton
                android:text="welcome"
                android:textStyle="bold"
                android:layout_gravity="center"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/radioButton2"
                android:layout_weight="1" />

            <RadioButton
                android:text="hello"
                android:textStyle="bold"
                android:layout_gravity="center"
                android:checked="true"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/radioButton3"
                android:layout_weight="1" />
        </RadioGroup>



</LinearLayout>

页面MainActivity

    package com.example.java.frag;

import android.app.FragmentTransaction;
import android.app.FragmentManager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

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

        TextView x = (TextView)findViewById(R.id.textView);


    }

    public void changetext(View view) {
        FragmentManager frag = getFragmentManager();
        FragmentTransaction tran = frag.beginTransaction();
        BlankFragment s = new BlankFragment();
        tran.replace(R.id.con,s);
        tran.commit();
    }
}

我该怎么做?

我希望得到一个例子

1 个答案:

答案 0 :(得分:0)

首先,您应该对查询非常清晰准确。接下来,您应该在此处使用EventBus。当需要不同组件之间的回调时,它真的很方便。要使用EventBus,您应该在应用程序的build.gradle中添加以下依赖项:

compile 'org.greenrobot:eventbus:3.0.0'

然后,您可以创建一个简单的POJO类来引用回调或事件。在这种情况下,您可以创建一个这样的类:

class OptionItemEvent {
  private String option;

  public OptionItemEvent(String option){
    this.option = option;
  }

  public String getOption(){
    return option;
  }
}

在BlankFragment.java中,您可以在相应的侦听器方法中调用该事件,例如在这种情况下:

@Override
public void onCheckedChanged(RadioGroup radioGroup, int radioButtonId) {
    RadioButton radioButton = (RadioButton)view.findViewById(radioButtonId);
    EventBus.getDefault().post(new OptionItemEvent(radioButton.getText().toString()));
}

在MainActivity.java中,添加以下代码:

@Override
protected void onResume(){
  super.onResume();
  EventBus.getDefault().register(this);
}

@Override
protected void onPause(){
  EventBus.getDefault().unregister(this);
  super.onPause();
}

@Subscribe (threadMode = ThreadMode.MAIN)
public void onOptionItemSelected(OptionItemEvent event){
  //Set the value for your TextView
  x.setText(event.getOption());
}

我希望这能解决你的问题。