Передача выбранной строки с помощью радиокнопки в другой вид деятельности - PullRequest
0 голосов
/ 12 апреля 2020

Я новичок здесь, а также в android. Я делаю новостное приложение, которое должно изменить URL-адрес (из новостей будет получен), когда переключатель выбран в настройках.

В настройках есть два переключателя для Engli sh и для хинди.

Вот LaunchActivity. java (метод, в котором я хочу строку) В методе fetchBloodGroup () я хочу передать строка вместо APIConfig.Hindi

public void fetchBloodGroup() {
        if (mActivity.customMethods.isNetworkAvailable(mActivity)) {
            //mActivity.showHideProgressDialog(R.string.show_progress_dialog);
            StringRequest stringRequest = new StringRequest(Request.Method.GET,APIConfig.Hindi, new com.android.volley.Response.Listener<String>() {
                @Override
                public void onResponse(String response) {

                    Log.d("lkghldg", response);


                    try {
                        JSONObject mainJsonObject = new JSONObject(response);

                        JSONArray jsonArrayArticles = mainJsonObject.getJSONArray("items");


                        for (int i = 0; i < jsonArrayArticles.length(); i++) {

                            NewsModel newsModel = new NewsModel();
                            JSONObject jsonObject = jsonArrayArticles.getJSONObject(i);







                            newsModel.setAuthor(jsonObject.getString("author"));
                            newsModel.setTime(jsonObject.getString("pubDate"));


                            newsModel.setTitle(jsonObject.getString("title"));
                            newsModel.setDescription(jsonObject.getString("description"));
                            newsModel.setImage(jsonObject.getString("thumbnail"));
                            newsModel.setUrl(jsonObject.getString("link"));


                            newsList.add(newsModel);


                        }


                        adapter = new VerticlePagerAdapter(mActivity, newsList);
                        verticleViewPager.setAdapter(adapter);
                    } catch (JSONException e) {
                        e.printStackTrace();
                    }


                }
            }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {

                }
            }) {

            };

            stringRequest.setShouldCache(false);
            stringRequest.setRetryPolicy(new DefaultRetryPolicy(3000, 2, 2f));
            RequestQueue requestQueue = Volley.newRequestQueue(mActivity);
            requestQueue.add(stringRequest);


        } else {
            //   Snackbar.make(mActivity.coordinatorLayout, R.string.no_internet_connection, Snackbar.LENGTH_LONG).show();

            Toast.makeText(getActivity(), "No internet connection", Toast.LENGTH_LONG).show();

        }


    }

Вот настройки. java Активность, с которой я хотел, чтобы желаемая строка передавалась при выборе радиокнопки

package com.santoshkumar.newsinshorts.Activities;
import android.os.Bundle;
import android.widget.RadioGroup;
import androidx.appcompat.app.ActionBar;
import androidx.appcompat.app.AppCompatActivity;
import com.santoshkumar.newsinshorts.R;

public class Settings extends AppCompatActivity {

    private RadioGroup radiolanguage;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.settings_activity);
        getSupportFragmentManager()
                .beginTransaction()
                .commit();
        ActionBar actionBar = getSupportActionBar();
        if (actionBar != null) {
            actionBar.setDisplayHomeAsUpEnabled(true);
        }

        radiolanguage = (RadioGroup) findViewById(R.id.radiolanguage);
        radiolanguage.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener()
        {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId)
            {
                switch(checkedId)
                {
                    case R.id.radio_eng:
                        break;
                    case R.id.radio_hindi:
                        break;
                    default:
                }
            }
        });


    }



}

В каждом случае будет отдельная строка

Пожалуйста, помогите мне Любая помощь будет оценена заранее Спасибо

Ответы [ 2 ]

0 голосов
/ 12 апреля 2020

Таким образом, для передачи данных между операциями вы используете Intent и добавляете ключи в Bundle при переходе от A к B. При переходе от B к A вы используете startActivityForResult.

Вот ответ на вопрос, подобный этому тот, который объясняет все подробно - { ссылка }

PS - для страницы настроек я бы порекомендовал держать значения в SharedPreferences или в базе данных, а ActivityA в onResume запрашивать у базы данных значение и делать то, что нужно.

0 голосов
/ 12 апреля 2020

Не думаю, что создание таких настроек, как вы, - хороший выбор. См. Руководство по настройке для разработчиков для лучшего решения. Вы увидите, что выбранные настройки также могут быть сохранены в SharedPreferences, и вы можете легко получить их оттуда, где у вас есть контекст.

Также я не знаю, является ли это просто цензурой кода или нет, но Вам, вероятно, также не нужна пустая транзакция фрагмента в начале.

...