簡體   English   中英

如何檢查另一個活動中選中了哪個單選按鈕,然后在IF語句中使用?

[英]How to check which radio button is checked in another activity, and then use in IF Statement?

我正在開發一個健身應用程序。 在我的設置活動中,我創建了選擇英里或公里的選項,如下所示。 [圖像單選按鈕][1]

然后是我的 run_interface 活動。 [距離文本視圖][2]

如果有人點擊英里單選按鈕(在設置活動中),距離應該輸出 run_interface 活動中指定的 distanceInmiles 方法,如果他們點擊 km 單選按鈕,距離應該輸出 distanceInkilometers 方法

這是我的設置活動

public class settings extends AppCompatActivity {

    RadioGroup distancebtn_group;
    RadioButton miles_btn;
    RadioButton kilometer_btn;
    RadioButton distance_button_clicked;
    RadioButton radioButton;


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

        distancebtn_group = findViewById(R.id.distance_btn_group);

    public void buttonCheck(View view) {
        boolean buttonChecked = ((RadioButton) view).isChecked();

        switch (view.getId()) {
            case R.id.miles_btn:
                if (buttonChecked)
                    break;

            case R.id.kilometer_btn:
                if (buttonChecked)
                    break;

這是我的 run_interface:

 @Override
    public void onLocationChanged(Location location) {
        curr_location = location;
        if (start_location == null) {
            start_location = curr_location;
            end_location = curr_location;
        } else
            end_location = curr_location;

        //(Update UI here(could be distanceInMiles or distanceInkilometers, depending on button selected)   
        distance_counter.setText(new DecimalFormat("0.00").format(distance));


        }
    }


    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {

    }

    @Override
    public void onProviderEnabled(String provider) {

    }


    @Override
    public void onProviderDisabled(String provider) {

    }


    private void distanceInMeters() {
        distance = distance + (start_location.distanceTo(end_location));
        start_location = end_location;

    }

    private void distanceInMiles() {
        distance = distance + (start_location.distanceTo(end_location) * 0.00062137);


    }

    private void distanceInkilometers() {
        distance = distance + (start_location.distanceTo(end_location) / 1000);
        start_location = end_location;

無論您在設置中提供了什么選項,您都應該將它們保存在某處,對嗎? 從保存的數據中獲取值並驗證 if 檢查。

您可以為此目的使用 SharedPreferences

首先定義radioButton clicklistener。

radiobutton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
 if(radioButton.isChecked()){

SharedPreferences pref = mContext.getSharedPreferences("MyPref", 0); // 0 - for private mode
        SharedPreferences.Editor editor = pref.edit();
        editor.putString("radiobutton", "checked");
        editor.commit();

 }
        }
    });

在第二個活動中

    SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", 0);
    String radiobutton = pref.getString("radiobutton", null);

 if(radiobutton.equals("checked){
 //run your code
 }

這將工作正常......

終於找到解決辦法

@Override
public void onLocationChanged(Location location) {
    curr_location = location;
    if (start_location == null) {
        start_location = curr_location;
        end_location = curr_location;
    } else
        end_location = curr_location;

    ChooseMetricUnits();
}

@Override
public void onStatusChanged(String provider, int status, Bundle extras) {

}

@Override
public void onProviderEnabled(String provider) {

}


@Override
public void onProviderDisabled(String provider) {

}


private void distanceInMeters() {
    distance = distance + (start_location.distanceTo(end_location));
    start_location = end_location;

}

private void distanceInMiles() {
    distance = distance + (start_location.distanceTo(end_location) * 0.00062137);
    distance_counter.setText(new DecimalFormat("0.00").format(distance) + " Miles");


}

private void distanceInkilometers() {
    distance = distance + (start_location.distanceTo(end_location) / 1000);
    start_location = end_location;
    distance_counter.setText(new DecimalFormat("0.00").format(distance) + " km");

}

private void ChooseMetricUnits() {
    final SharedPreferences sharedPreferences = getApplicationContext().getSharedPreferences(GetInfo, MODE_PRIVATE);
    final Boolean MetricUnit = sharedPreferences.getBoolean(settings.KMBTN, true);
    if(MetricUnit) {
        distanceInkilometers();
    } else
        distanceInMiles();
    }

}

我剛剛從第一個活動(設置)中提取了一個布爾值(KMBTN),並在選中相應按鈕時使用它來調用正確的方法。

為了檢查它是否有效,我在公里無效方法中添加了“km”,在英里無效方法中添加了“英里”。

我希望這對將來遇到同樣問題的人有所幫助。

爪哇機器人

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM