Android 如何将变量从活动传递到片段

Android 如何将变量从活动传递到片段,android,android-fragments,android-intent,Android,Android Fragments,Android Intent,我无法在OneFragment的文本视图中显示字符串描述的值。 我是新的Android编程,任何帮助将不胜感激` 这里是主要活动 package com.example.dell.myop; import android.content.Intent; import android.os.AsyncTask; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.o

我无法在OneFragment的文本视图中显示字符串描述的值。 我是新的Android编程,任何帮助将不胜感激`

这里是主要活动

package com.example.dell.myop;

import android.content.Intent;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;


import android.os.Bundle;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;

import com.example.dell.myop.R;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.util.Log;
import android.widget.TextView;

import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;


import com.example.dell.myop.fragments.OneFragment;

import com.example.dell.myop.fragments.ThreeFragment;
import com.example.dell.myop.fragments.TwoFragment;





public class MainActivity extends AppCompatActivity {

    private Toolbar toolbar;
    private TabLayout tabLayout;
    private ViewPager viewPager;
    String description;






    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);



        setContentView(R.layout.activity_main);
        DownloadTask task = new DownloadTask();
        task.execute("http://api.openweathermap.org/data/2.5/weather?q=hamirpur,india&appid=41352ca35dd1be72cc7d9f47351d1b41");



        toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

        viewPager = (ViewPager) findViewById(R.id.viewpager);
        setupViewPager(viewPager);

        tabLayout = (TabLayout) findViewById(R.id.tabs);
        tabLayout.setupWithViewPager(viewPager);
    }




    private void setupViewPager(ViewPager viewPager) {
        ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
        adapter.addFragment(new OneFragment(), "Today");
        adapter.addFragment(new TwoFragment(), "Tomorrow");
        adapter.addFragment(new ThreeFragment(), "Day After");
        viewPager.setAdapter(adapter);
    }

    class ViewPagerAdapter extends FragmentPagerAdapter {
        private final List<Fragment> mFragmentList = new ArrayList<>();
        private final List<String> mFragmentTitleList = new ArrayList<>();

        public ViewPagerAdapter(FragmentManager manager) {
            super(manager);
        }

        @Override
        public Fragment getItem(int position) {
            return mFragmentList.get(position);
        }

        @Override
        public int getCount() {
            return mFragmentList.size();
        }

        public void addFragment(Fragment fragment, String title) {
            mFragmentList.add(fragment);
            mFragmentTitleList.add(title);
        }

        @Override
        public CharSequence getPageTitle(int position) {
            return mFragmentTitleList.get(position);
        }
    }
}

将函数setDescription(字符串文本)添加到片段中。在活动中,您获得片段,然后调用该函数。函数应该设置textview。

您可以在片段中添加函数setDescription(字符串文本)。在活动中,您获得片段,然后调用该函数。函数应该设置textview。

要将值从异步任务传递回启动它的活动,可以将活动对象注入任务,然后调用活动对象的方法传递回结果

在您的情况下,您可以重写DownloadTask构造函数以将活动作为参数。然后,当任务完成时,您可以调用一个方法,例如
activity.setDescription(description)
,为活动提供值。然后,该活动将更改片段的UI


我也是Android新手,所以如果有更好的方法,请原谅。

要将值从异步任务传递回启动它的活动,可以将活动对象注入任务,然后调用活动对象的方法传递回结果

在您的情况下,您可以重写DownloadTask构造函数以将活动作为参数。然后,当任务完成时,您可以调用一个方法,例如
activity.setDescription(description)
,为活动提供值。然后,该活动将更改片段的UI


我也是Android新手,所以如果有更好的方法,请原谅我。

使用类似的方式,从活动中发送

 EditOption editOption = new EditOption();-- your fragment 
            Bundle args = new Bundle();
            args.putInt("id", z);
            args.putString("title",title);
            args.putString("desc",des);
            editOption.setArguments(args);
零碎

            String title = getArguments().getString("title");
            String des = getArguments().getString("desc");
            z=  getArguments().getInt("id");
根据您的案例编辑代码


希望此帮助使用类似的方式从活动中发送

 EditOption editOption = new EditOption();-- your fragment 
            Bundle args = new Bundle();
            args.putInt("id", z);
            args.putString("title",title);
            args.putString("desc",des);
            editOption.setArguments(args);
零碎

            String title = getArguments().getString("title");
            String des = getArguments().getString("desc");
            z=  getArguments().getInt("id");
根据您的案例编辑代码


希望此帮助

片段具有用于此目的的setArguments()方法。片段具有用于此目的的setArguments()方法。异步任务完成后如何发送数据?异步任务完成后如何发送数据?