我有一个按钮,当我点击它时我想要去页面片段检查单选按钮,例如,如果它是一个问候,那么单词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();
}
}
我该怎么做?
我希望得到一个例子
答案 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());
}
我希望这能解决你的问题。