【问题标题】:Passing the selected string by radiobutton to another activity通过单选按钮将选定的字符串传递给另一个活动
【发布时间】:2020-07-24 22:31:08
【问题描述】:

我是新来的,也是安卓开发的 我正在制作一个新闻应用程序,当从设置活动中选择单选按钮时,它应该更改 url(从新闻中获取)。

设置活动有两个单选按钮,分别用于英语和印地语。

这是 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();

        }


    }

这是 Settings.java Activity,我希望在选择单选按钮时传递所需的字符串

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:
                }
            }
        });


    }



}

在每种情况下都会有单独的字符串

请帮帮我 任何类型的帮助将不胜感激 提前致谢

【问题讨论】:

  • 你没有提到那个代码有什么问题
  • 代码没有问题,我想知道如何将字符串传递给LaunchActivity.java类
  • 你能指出上面代码中你想传递的那个字符串吗
  • 你说你想把字符串放在 APIConfit.Hindi 的地方,你能不能指出它在你的代码中的位置

标签: java android android-studio radio-button sharedpreferences


【解决方案1】:

我不认为像您那样创建设置是一个好的选择。请参阅开发人员settings guide 以获得更好的解决方案。您会看到选定的设置也可以存储在 SharedPreferences 中,并且无论您有上下文,您都可以轻松地从那里获取它们。

我也不知道这是否只是代码审查,但您可能也不需要一开始就需要一个空片段事务。

【讨论】:

  • 这叫做建议,建议属于 cmets,不是答案
  • 可能是的,但我认为这会是一个更好的答案,因为它比做一些奇怪的活动意图操作更容易
【解决方案2】:

因此,要在活动之间传递数据,您使用 Intent 并在从 A 传递到 B 时将键添加到 Bundle。从 B 传递到 A 时,您使用 startActivityForResult。

这是对此类问题的回答,它深入解释了所有问题 - https://stackoverflow.com/a/45979367/2249224

PS - 对于设置页面,我建议将值保存在 SharedPreferences 或数据库中,并让 onResume 中的 ActivityA 查询数据库中的值并执行所需的操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多