【问题标题】:How do I pass a string from inside a loop in a function in one class to another class?如何将字符串从一个类中的函数的循环内部传递到另一个类?
【发布时间】:2014-04-18 00:09:20
【问题描述】:

我正在尝试将在 class1 中的一个函数中的 2 个循环中定义的字符串 catcode (这是各个类别中的选定类别)传递给另一个 class2 ,但不知道如何去做。有什么线索吗? 这是我的代码: 第一课:

public void onClick(final View view) {
switch (view.getId()) {
...cases..
case R.id.button_done:
...case stuff...
Intent intent = new Intent();

                if(abcNews != null && abcNews.size() > 0){
                    for(CategoryCheckableRow rwa : abcNews){
                        if(rwa.isSelected()){

                            String catCode = rwa.getCategoryName();
                            intent.putExtra("cat_name", catCode);
                            Log.d("newsdash", "category name is"+catCode);

                            break;
                        }

                    }
                }

                if(cnnNews != null && cnnNews.size() > 0){
                    for(CategoryCheckableRow rwa : cnnNews){
                        if(rwa.isSelected()){

                            String catCode = rwa.getCategoryName();
                            intent.putExtra("cat_name", catCode);

                            break;
                        }
                    }
                }

从这段代码中可以看出,在这两个循环中,我定义了 catCode,我需要将其传递给类 2,这样: 类2:

public View onCreateView(final LayoutInflater inflater, final ViewGroup container, final Bundle savedInstanceState) {


    frontpageHeader = view.findViewById(R.id.frontpage_header);
            ((TextView) frontpageHeader.findViewById(R.id.header_title)).setText(getActivity().getString(catCode));
            frontpageHeader.setOnClickListener(this);

    }

P.S:请注意我一次只使用一个类别,比如选择 abnews 中的 catCode 或选择 cnnNews 并且该字符串被识别并需要传递给另一个类 class2,它会更新基于标题的在选定的文本上。

【问题讨论】:

  • 我想你说的是两个 Activity 类 class1 和 class2。在执行上述代码时会发生什么。标题 TextView 是否显示来自 class1 的值?如果有任何错误,请显示logcat。Activity class2 出现了吗?
  • 当前类 2 是一个静态字符串,试图使其成为动态的,以便它可以从类 1 中为所选类别获取值

标签: android android-layout android-intent android-fragments textview


【解决方案1】:

您已经将 catCode 放入您的意图中,但我认为您的问题是您的 Class2 是一个片段而不是一个活动,因此假设您正在使用代码创建片段,您必须在您开始的活动中添加类似的内容

Bundle extras = getIntent().getExtras();
fragment.setArguments(extras);

在你的片段中

Bundle bundle = getArguments();
String catCode = bundle.getString("cat_name");

【讨论】:

  • 我尝试了这个: if(abcNews != null && abcNews.size() > 0){ for(CategoryCheckableRow rwa : abcNews){ if(rwa.isSelected()){ String catCode = rwa .getCategoryName(); intent.putExtra("cat_name", catCode); ((TextView) frontpageHeader.findViewById(R.id.header_title)).setText(getActivity().getString(catCode)); } 但它在 getstring 的 catcode 上显示错误。有没有办法定义它?
  • getActivity().getString‌​(catCode) 显示错误,因为它试图在您的资源中查找“catCode”,而不是您在意图中使用的资源
  • 好的,我试过了 ((TextView) frontpageHeader.findViewById(R.id.header_title)).setText(catCode);但这导致了崩溃。我有一个 MainActivity,其中有基本代码: String catName = data.getStringExtra("cat_name"); DashboardFragment f = DashboardFragment.getInstance(); if(f != null){ DashboardFrontPageFragment fpFrg = f.getFrontPage(); fpFrg.setkeyword(catName); fpFrg.restartLoader(); }//关闭第一个if
  • 我不确定如何使用它,我是否在主要活动中使用我定义其他代码的第一个块,而在另一个地方的 createview 中使用第二个块?如何根据您的建议更改我的代码
  • 也许这会对你有所帮助stackoverflow.com/questions/16212469/…
猜你喜欢
  • 2015-10-10
  • 2013-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多