java - 如何从java类中调用fragment方法?

标签 java android

我尝试从java类调用fragment方法: 我知道关于这个主题的堆栈溢出有很多问题,但我的情况不同

ConnectionAsyncTask.java:

import android.app.Activity;
import android.os.AsyncTask;

import java.util.List;

public class ConnectionAsyncTask extends AsyncTask<String,String,String> {
    Activity activity;
    private EventListener listener;

    public ConnectionAsyncTask(Activity activity) {
        this.activity=activity;
    }
    @Override
    protected String doInBackground(String... params) {
        String content =HttpManager.getData(params[0]);
        return content;
    }
    @Override
    protected void onProgressUpdate(String... values) {
        super.onProgressUpdate(values);
    }
    @Override
    protected void onPostExecute(String s) {
        List<Country> countries= CountryJasonParser.getObjectFromJason(s);
        if (countries != null) {
            String s1 = "";

                s1=s1+"\n"+"" + countries.get(0).getDes() ;
        //i want to call DisplyOnTextView(s1) 
        } 
    }
}

countryfragment.java:

    import android.content.Intent;
    import android.os.Bundle;
    import android.support.design.widget.NavigationView;
    import android.view.LayoutInflater;
    import android.view.MenuItem;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.ImageButton;
    import android.widget.ImageView;
    import android.widget.TextView;

    public class countryfragment extends android.support.v4.app.Fragment implements NavigationView.OnNavigationItemSelectedListener {
        TextView desc;

        public countryfragment() {
        }

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

            ConnectionAsyncTask connectionAsyncTask = new ConnectionAsyncTask(getActivity());
//This is a server which contains data to load it            connectionAsyncTask.execute("http://www.mocky.io/v2/570d3677270000f600dc29b6");
            View view = inflater.inflate(R.layout.fragment_countryfragment,container,false);
            desc = (TextView) view.findViewById(R.id.desc);

            return view;
        }
        public void DisplyOnTextView(String s) {
            desc.setText(s);
        }

        @Override
        public boolean onNavigationItemSelected(MenuItem item) {
            return false;
        }
    }
<小时/>

结果必须是: 在 TextView 上显示数据。

最佳答案

试试这个:

public class ConnectionAsyncTask extends AsyncTask<String,String,String> {
    Activity activity;
    private EventListener listener;
    private TextView mTextView

    public ConnectionAsyncTask(Activity activity, TextView txt) {
        this.activity=activity;
       this.mTextView=txt;
    }
    @Override
    protected String doInBackground(String... params) {
        String content =HttpManager.getData(params[0]);
        return content;
    }
    @Override
    protected void onProgressUpdate(String... values) {
        super.onProgressUpdate(values);
    }
    @Override
    protected void onPostExecute(String s) {
        List<Country> countries= CountryJasonParser.getObjectFromJason(s);
        if (countries != null) {
            String s1 = "";

                s1=s1+"\n"+"" + countries.get(0).getDes() ;

                mTextView.setText(s1);
        } 
    }
}

然后

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


        View view = inflater.inflate(R.layout.fragment_countryfragment,container,false);
        desc = (TextView) view.findViewById(R.id.desc);
        ConnectionAsyncTask connectionAsyncTask = new ConnectionAsyncTask(getActivity(), desc);
        connectionAsyncTask.execute("http://www.mocky.io/v2/570d3677270000f600dc29b6");

        return view;
    }

关于java - 如何从java类中调用fragment方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36966445/

相关文章:

java - 如何使用 openGL 和贝塞尔曲线创建拼图 block ?

java - 如果我正在修改它,是否需要从方法返回一个对象?

android - 如何将 FileInputStream 提供给 Videoview?

java - Android - 在 Chronometer 中计算耗时

android - java - Google Play 游戏服务

android -> 无法在 :/opt/android-sdk-linux 中找到哈希字符串 'android-26' 的目标

java - 大括号内的正则表达式值

java - 如何在 Wiremock Servlet 上启用响应模板?

java - 将列表对象作为参数发送到jsp端

java - 如何使用 Firebase 将记录的用户数据检索到导航 header 作为 Android studio 项目中的用户名