Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何确定I方法是由片段调用的?_Android - Fatal编程技术网

Android 如何确定I方法是由片段调用的?

Android 如何确定I方法是由片段调用的?,android,Android,我有一个main活动,它又有几个片段 在片段生成器中,我得到一个活动 我有一个负责所有http请求的GETJson方法。这需要将JSONObject返回给调用方。 该方法使用AsynkTask,因此我创建了一个接口,并实现了从OnPostExecute获取返回的片段 但是,由于所有片段共享同一个活动(MainActivity),因此始终返回该活动 package JSON; import android.app.Activity; import android.app.ProgressDial

我有一个main活动,它又有几个片段

在片段生成器中,我得到一个活动

我有一个负责所有http请求的GETJson方法。这需要将JSONObject返回给调用方。 该方法使用AsynkTask,因此我创建了一个接口,并实现了从OnPostExecute获取返回的片段

但是,由于所有片段共享同一个活动(MainActivity),因此始终返回该活动

package JSON;

import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;
import android.util.Log;
import android.view.View;
import android.widget.Toast;

import com.example.piadas.MainActivity;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;

import utils.OnJsonFinished;

public class GetJson extends AsyncTask<String, Void, String> {

    public interface OnJsonFinished{
        public void onJsonFinishedMethod(Activity act, Context ctx, String response);
    }

    ProgressDialog dialog;
    Context ctx;
    Activity act;
    String msg;
    private utils.OnJsonFinished listener;






    public GetJson(Context ctx, Activity act) {
        this.ctx = ctx;
        this.act = act;


        if(act instanceof utils.OnJsonFinished){
            this.listener = (utils.OnJsonFinished)act;
        }
        else{
            throw new ClassCastException(act.toString()
                    + " must implement OnJsonFinished");
        }

    }

    protected void onPreExecute() {
        super.onPreExecute();
        dialog = ProgressDialog.show(ctx, "Aguarde", "Consultando...");
    }

    @Override
    protected String doInBackground(String... strings) {
        String command = strings[0];
        try {
            URL url = new URL(command);
            URLConnection con = url.openConnection();
            con.setRequestProperty("Authorization", "Basic c3VwZXI6MTIzNA==");
            con.setConnectTimeout(60000);
            //con.setReadTimeout(readTimeout);
            InputStream is = con.getInputStream();

            /*HttpClient client = new DefaultHttpClient();
            HttpGet request = new HttpGet(command);
            HttpParams httpParams = new BasicHttpParams();
            HttpConnectionParams.setConnectionTimeout(httpParams, 8000);
            client = new DefaultHttpClient(httpParams);
            request.addHeader("Authorization", "Basic c3VwZXI6MTIzNA==");

            HttpResponse response = client.execute(request);

            InputStream is = response.getEntity().getContent();*/

            BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"), 8);
            StringBuilder sb = new StringBuilder();

            String line = null;
            while ((line = reader.readLine()) != null) {
                sb.append(line + "\n");
            }
            msg = "Efetuado com sucesso!";

            //PrincipalActivity.PDV.setConectado(true);
            return sb.toString();

        } catch (Exception ex) {
            Log.e("Erro", "Descrição:", ex);
            msg = ex.toString();
            return "";
        }


    }


    protected void onPostExecute(String json) {

        dialog.dismiss();
        if (json.equals("")) {
            Toast.makeText(ctx, msg, Toast.LENGTH_SHORT).show();
        }
        else{
            listener.onJsonFinishedMethod(act, ctx, json);
        }

    }


}

    package utils;

    import android.app.Activity;
    import android.content.Context;

    public interface OnJsonFinished {

        public void onJsonFinishedMethod(Activity act, Context ctx, String response);
    }

package com.example.piadas;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.RadioGroup;
import android.widget.Toast;

import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;

import org.json.JSONArray;
import org.json.JSONObject;

import java.util.ArrayList;
import java.util.List;

import JSON.GetJson;
import JSON.apiPiadas;
import adapter.adapterListPiadas;
import piadas.entidade.Categoria;
import piadas.entidade.FaixaEtaria;
import piadas.entidade.Piada;
import utils.OnJsonFinished;

public class BancoPiadaFragment extends Fragment implements OnJsonFinished {

    RadioGroup rgCategoria;
    RadioGroup rgFaixa;

    private View view;

    Button btnBuscar;

    EditText editPalavra;
    List<Piada> listaPiadas;
    ListView lvPiadas;

    Context ctx;
    Activity act;
    adapterListPiadas adapterPiadas;

    public BancoPiadaFragment(Activity act, Context ctx) {
        this.ctx = ctx;
        this.act = act;
    }



    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        view = inflater.inflate(R.layout.fragment_bancopiada, container, false);

        return view;

    }

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        initView();
        init();


    }

    private void initView(){
        btnBuscar = view.findViewById(R.id.btnBuscar);
        rgCategoria = view.findViewById(R.id.gpCateg);
        rgFaixa = view.findViewById(R.id.gpFaixas);
        editPalavra = view.findViewById(R.id.editPalavra);
        lvPiadas = view.findViewById(R.id.lvPiadas);
    }

    private void init(){

        btnBusca_click();
        //listaPiadas = new ArrayList<>();
        lvPiadas.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                FragmentManager fm = getActivity().getSupportFragmentManager();

                FragmentTransaction ft = fm.beginTransaction();
                ft.replace(R.id.fragment_content, new PiadaFragment(listaPiadas.get(position))).addToBackStack(null);
                ft.commit();
            }
        });

    }



    private void btnBusca_click(){
        btnBuscar.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                listaPiadas = new ArrayList<>();
                aplicaFiltroPiadas();
            }
        });
    }




    private void aplicaFiltroPiadas(){
        //int i = rgCategoria.getCheckedRadioButtonId();

        int categoria = -1;
        int faixaEtaria = -1;
        String palavra = "";

        switch (rgCategoria.getCheckedRadioButtonId()) {
            case R.id.rbTCategoria:
                categoria = -1;
                break;
            case R.id.rbJoaozinho:
                categoria = 2;
                break;
            case R.id.rbJapones:
                categoria = 3;
                break;
            case R.id.rbLoira:
                categoria = 0;
                break;
            case R.id.rbPortugues:
                categoria = 1;
                break;
        }

        switch (rgFaixa.getCheckedRadioButtonId()) {
            case R.id.rbTFaixas:
                faixaEtaria = -1;
                break;
            case R.id.rbFLivre:
                faixaEtaria = 0;
                break;
            case R.id.rbF14:
                faixaEtaria = 1;
                break;
            case R.id.rbF18:
                faixaEtaria = 2;
                break;

        }
        palavra = editPalavra.getText().toString().trim();

        findPiadas(categoria, faixaEtaria, palavra);



        //Toast.makeText(this, "Teste:", Toast.LENGTH_SHORT).show();
    }

    private void findPiadas(int categoria, int faixa, String palavra){

        new GetJson(ctx, act).execute(apiPiadas.findPiada(categoria, faixa, palavra));

    }



    private void preparaTela(Activity act){
        adapterPiadas = new adapterListPiadas(listaPiadas, act);
        lvPiadas.setAdapter(adapterPiadas);
    }


    @Override
    public void onJsonFinishedMethod(Activity act, Context ctx, String response) {
        if (!response.equals("")) {
            try{
                JSONArray arrayPiadas = new JSONArray(response);
                JSONObject objPiada;
                for(int i=0; i < arrayPiadas.length(); i++){
                    objPiada = arrayPiadas.getJSONObject(i);
                    JSONObject objCategoria = objPiada.getJSONObject("categoria");
                    JSONObject objFaixaEtaria = objPiada.getJSONObject("faixaEtaria");

                    Categoria cat = new Categoria(objCategoria.getInt("id"), objCategoria.getString("nome"));
                    FaixaEtaria faixaEtaria = new FaixaEtaria(objFaixaEtaria.getInt("id"), objFaixaEtaria.getString("descricao"));
                    listaPiadas.add(new Piada(objPiada.getInt("id"), objPiada.getString("titulo"), cat, faixaEtaria, objPiada.getString("conteudo"), objPiada.getString("imagem")));
                }
                preparaTela(act);

            }catch(Exception ex){
                Toast.makeText(ctx, ex.toString(), Toast.LENGTH_SHORT).show();
            }

        }
    }
}
包JSON;
导入android.app.Activity;
导入android.app.ProgressDialog;
导入android.content.Context;
导入android.os.AsyncTask;
导入android.util.Log;
导入android.view.view;
导入android.widget.Toast;
导入com.example.piadas.main活动;
导入java.io.BufferedReader;
导入java.io.InputStream;
导入java.io.InputStreamReader;
导入java.net.URL;
导入java.net.URLConnection;
导入utils.OnJsonFinished;
公共类GetJson扩展异步任务{
公共接口OnJsonFinished{
public void onJsonFinishedMethod(活动行为、上下文ctx、字符串响应);
}
进程对话;
上下文ctx;
活动法;
串味精;
私有utils.OnJsonFinished侦听器;
公共GetJson(上下文ctx,活动法案){
this.ctx=ctx;
this.act=act;
if(act instanceof utils.OnJsonFinished){
this.listener=(utils.OnJsonFinished)act;
}
否则{
抛出新的ClassCastException(act.toString()
+“必须实现OnJsonFinished”);
}
}
受保护的void onPreExecute(){
super.onPreExecute();
dialog=ProgressDialog.show(ctx,“Aguarde”,“Consultando…”);
}
@凌驾
受保护的字符串背景(字符串…字符串){
字符串命令=字符串[0];
试一试{
URL=新URL(命令);
URLConnection con=url.openConnection();
con.setRequestProperty(“授权”,“基本c3VwZXI6MTIzNA=”);
con.设置连接超时(60000);
//con.setReadTimeout(读取超时);
InputStream=con.getInputStream();
/*HttpClient=new DefaultHttpClient();
HttpGet请求=新的HttpGet(命令);
HttpParams HttpParams=新的BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParams,8000);
客户机=新的默认HttpClient(httpParams);
addHeader(“授权”,“基本c3VwZXI6MTIzNA=”);
HttpResponse response=client.execute(请求);
InputStream is=response.getEntity().getContent()*/
BufferedReader reader=新的BufferedReader(新的InputStreamReader(is,“UTF-8”),8;
StringBuilder sb=新的StringBuilder();
字符串行=null;
而((line=reader.readLine())!=null){
sb.追加(第+行“\n”);
}
msg=“Efetuado com successo!”;
//PrincipalActivity.PDV.setConectado(真);
使某人返回字符串();
}捕获(例外情况除外){
Log.e(“Erro”,“descripção:”,ex);
msg=ex.toString();
返回“”;
}
}
受保护的void onPostExecute(字符串json){
dialog.dismise();
if(json.equals(“”){
Toast.makeText(ctx、msg、Toast.LENGTH_SHORT).show();
}
否则{
onJsonFinishedMethod(act、ctx、json);
}
}
}
包UTIL;
导入android.app.Activity;
导入android.content.Context;
公共接口OnJsonFinished{
public void onJsonFinishedMethod(活动行为、上下文ctx、字符串响应);
}
package com.example.piadas;
导入android.app.Activity;
导入android.content.Context;
导入android.os.Bundle;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.AdapterView;
导入android.widget.Button;
导入android.widget.EditText;
导入android.widget.ListView;
导入android.widget.RadioGroup;
导入android.widget.Toast;
导入androidx.annotation.Nullable;
导入androidx.fragment.app.fragment;
导入androidx.fragment.app.FragmentManager;
导入androidx.fragment.app.FragmentTransaction;
导入org.json.JSONArray;
导入org.json.JSONObject;
导入java.util.ArrayList;
导入java.util.List;
导入JSON.GetJson;
导入JSON.apiPiadas;
导入adapter.adapterListPiadas;
导入piadas.entidade.Categoria;
进口piadas.entidade.FaixaEtaria;
导入piadas.entidade.Piada;
导入utils.OnJsonFinished;
公共类BanCopiadFragment扩展了JsonFinished上的片段实现{
放射组RGA;
放射组rgFaixa;
私人视野;
按钮btnBuscar;
EditText editPalavra;
列出清单;
列表视图lvPiadas;
上下文ctx;
活动法;
adapterListPiadas adapterPiadas;
公共银行(活动法,上下文ctx){
this.ctx=ctx;
this.act=act;
}
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
视图=充气机。充气(R.layout.fragment_bancopiada,容器,假);
返回视图;
}
@凌驾
ActivityCreated上的公共无效(@Nullable Bundle savedinStateCState){
super.onActivityCreated(savedInstanceState);
initView();
init();
}
私有void initView(){
btnBuscar=view.findViewById(R.id.btnBuscar);
rgCategoria=view.findviewbyd(R.id.gpCateg);
rgFaixa=view.findviewbyd(R.id.gpFaixas);
editPalavra=view.findViewById(R.id.editPalavra);
lvPiadas=view.findviewbyd(R.id.lvPiadas);
}
私有void init(){
b b USCA_单击();
//listaPiadas=newarraylist();
lvPiadas.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
公共链接(AdapterView)
public GetJson(Activity act, OnJsonFinished listener) {
}
private void findPiadas(int categoria, int faixa, String palavra){
   new GetJson(act, this).execute(apiPiadas.findPiada(categoria, faixa, palavra));
}