Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/195.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
Java 活动或片段返回null_Java_Android_Android Fragments_Android Asynctask_Android Activity - Fatal编程技术网

Java 活动或片段返回null

Java 活动或片段返回null,java,android,android-fragments,android-asynctask,android-activity,Java,Android,Android Fragments,Android Asynctask,Android Activity,我想了解如何使用几乎自动与活动或片段的生命周期集成的加载程序。 如果确实需要异步任务,那么必须以适当的方式管理片段的生命周期。 同时,您必须使用setReainInstance将片段与所有引用一起保存在内存中,否则将重新创建,如果不更新UI null,则在PostExecute getActivity上执行,否则不执行,并且在任何情况下,如果片段“断开连接”,则将结果保存在某个位置,然后重新打开(onActivityCreated)您可以使用保存的数据更新UI。 为什么我通过获得一点“时间”总是

我想了解如何使用几乎自动与活动或片段的生命周期集成的加载程序。 如果确实需要异步任务,那么必须以适当的方式管理片段的生命周期。 同时,您必须使用setReainInstance将片段与所有引用一起保存在内存中,否则将重新创建,如果不更新UI null,则在PostExecute getActivity上执行,否则不执行,并且在任何情况下,如果片段“断开连接”,则将结果保存在某个位置,然后重新打开(onActivityCreated)您可以使用保存的数据更新UI。 为什么我通过获得一点“时间”总是相同的错误:

java.lang.NullPointerException
        at android.widget.ArrayAdapter.init(ArrayAdapter.java:310)
        at android.widget.ArrayAdapter.<init>(ArrayAdapter.java:104)
        at com.megadown.megacodownloader.ParsingArrayAdapter.<init>(ParsingArrayAdapter.java:30)
        at com.megadown.megacodownloader.Tab_Search$ParsingPaginaWeb.onPostExecute(Tab_Search.java:256)
        at com.megadown.megacodownloader.Tab_Search$ParsingPaginaWeb.onPostExecute(Tab_Search.java:118)
        at android.os.AsyncTask.finish(AsyncTask.java:631)
        at android.os.AsyncTask.access$600(AsyncTask.java:177)
        at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
        at android.os.Handler.dispatchMessage(Handler.java:99)
        at android.os.Looper.loop(Looper.java:137)
        at android.app.ActivityThread.main(ActivityThread.java:4898)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:511)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
        at dalvik.system.NativeStart.main(Native Method)
09-08 02:46:26.289    3004-3004/? E/Launcher: Error finding setting, default accessibility to not found: accessibility_enabled
java.lang.NullPointerException
位于android.widget.ArrayAdapter.init(ArrayAdapter.java:310)
位于android.widget.ArrayAdapter.(ArrayAdapter.java:104)
在com.megadown.megacodownloader.parsingarayadapter。(parsingarayadapter.java:30)
在com.megadown.megacodownloader.Tab_Search$ParsingPaginaWeb.onPostExecute(Tab_Search.java:256)
在com.megadown.megacodownloader.Tab_Search$ParsingPaginaWeb.onPostExecute(Tab_Search.java:118)
位于android.os.AsyncTask.finish(AsyncTask.java:631)
在android.os.AsyncTask.access$600(AsyncTask.java:177)
位于android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
位于android.os.Handler.dispatchMessage(Handler.java:99)
位于android.os.Looper.loop(Looper.java:137)
位于android.app.ActivityThread.main(ActivityThread.java:4898)
位于java.lang.reflect.Method.Invokenactive(本机方法)
位于java.lang.reflect.Method.invoke(Method.java:511)
在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006)上
位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
在dalvik.system.NativeStart.main(本机方法)
09-08 02:46:26.289    3004-3004/? E/Launcher:错误查找设置,默认可访问性为未找到:可访问性\u已启用
指的是:

    public class Tab_Search extends Fragment implements SearchView.OnQueryTextListener{

    View view;
    ListView lista;
    int cont = 0;
    String search = "";

    public   SearchView mSearchView;
    ParsingPaginaWeb parsing = new ParsingPaginaWeb();
    String [] indirizzo;
    WebView webview;
    ParsingArrayAdapter adapter;
    int sdk = android.os.Build.VERSION.SDK_INT;
    final String[] theUrl = new String[1];
    int volte = 0;
    Activity mActivity;
    Context c;

    ArrayList<String> titoli; //lista dei titoli
    ArrayList<String> descrizioni; //lista delle descrizioni
    // ArrayList<Integer> immagini;
    int [] immagini;

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        super.onCreateView(inflater, container, savedInstanceState);
        view = inflater.inflate(R.layout.tab_search, container, false);
        c = view.getContext();
        setRetainInstance(true);
        if (savedInstanceState != null) {
            return view;
        }


        webview = (WebView) view.findViewById(R.id.web);





        webview.setWebViewClient(new WebViewClient() {

            public void onPageFinished(WebView view, String url) {
                theUrl[0] = url;
                System.out.println(theUrl[0]);
                Toast.makeText(getActivity(),"Link:"+url,Toast.LENGTH_SHORT).show();
                copy();
                paste();
            }

        });



        webview.getSettings().setJavaScriptEnabled(true);
        webview.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
        webview.getSettings().setLoadWithOverviewMode(true);
        webview.getSettings().setUseWideViewPort(true);
        webview.getSettings().setPluginsEnabled(true);
        //web_view.getSettings().setBuiltInZoomControls(true);
        webview.getSettings().setSupportMultipleWindows(true);
        webview.getSettings().setLoadsImagesAutomatically(true);
        webview.getSettings().setLightTouchEnabled(true);
        webview.getSettings().setDomStorageEnabled(true);
        webview.getSettings().setLoadWithOverviewMode(true);

        lista = (ListView)view.findViewById(R.id.main_lista);//recupero lista da id
        lista.setClickable(true);
        lista.setOnItemClickListener(new AdapterView.OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3)
            {
                int posizione = position+1;
                webview.loadUrl(indirizzo[position]);

            }
        });

        //creo ed eseguo l'asynctask


        parsing.execute("");




        return view;
    }
    @Override
    public void onActivityCreated(Bundle savedInstanceState)
    {
        super.onActivityCreated(savedInstanceState);

        mActivity = this.getActivity();


    }

    private class ParsingPaginaWeb extends AsyncTask<String,Integer,String> {


        String title;
        String sizes;
        int cont = 0;
        int contatore2 = 0;

        @Override
        protected void onPreExecute()
        {
            //prima di eseguire il parsing inizializzo gli arraylist
            titoli = new ArrayList<String>();
            descrizioni = new ArrayList<String>();
            //immagini = new ArrayList<Integer>();
            immagini = new int[500];
            indirizzo = new String[500];

        }

        @Override
        protected String doInBackground(String... params) {

            try {
                // NB: controllate di importare le classi giuste
                // all'inizio ci deve essere org.jsoup

                // ricavo l'html della pagina con user agent desktop (Chrome)
                // e timeout 30000
                Document doc = Jsoup.connect("link"+search)
                        .userAgent("Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.172 Safari/537.22")
                        .get();

                // prendo la tabella
                // (con .first() ottengo il primo elemento, in questo caso l'unico )
                Elements links = doc.select(".link");
                for( Element link: links )
                {
                    String href = link.attr("href");

                    Elements titles = link.select( ".title" );
                    Elements size = link.select(".size");

                    title = ( titles.size() > 0 ) ? titles.get( 0 ).text() : "";
                    sizes = (size.size() > 0)  ? size.get(0).text() : "";






                if(contatore2 > 1)
                {
                    if(title.toString().endsWith(".zip"))
                    {
                        immagini[cont] = (R.drawable.appx7zipicon);

                    }else if(title.toString().endsWith(".mp3"))
                    {
                        immagini[cont] = (R.drawable.mp3icon);
                    }else if(title.toString().endsWith(".avi"))
                    {
                        immagini[cont] = (R.drawable.movieicon);
                    }else if(title.toString().endsWith(".rar"))
                    {
                        immagini[cont] = (R.drawable.appx7zipicon);
                    }
                    else if(title.toString().endsWith(".mp4"))
                    {
                        immagini[cont] = (R.drawable.movieicon);
                    }else if(title.toString().endsWith(".mkv"))
                    {
                        immagini[cont] = (R.drawable.movieicon);
                    }else if(title.toString().endsWith(".png"))
                    {
                        immagini[cont] = (R.drawable.pngicon);
                    }else if(title.toString().endsWith(".jpg"))
                    {
                        immagini[cont] = (R.drawable.jpegicon);
                    }else if(title.toString().endsWith(".jpeg"))
                    {
                        immagini[cont] = (R.drawable.jpegicon);
                    }else if(title.toString().endsWith(".pdf"))
                    {
                        immagini[cont] = (R.drawable.pdfdocumenticon);
                    }else if(title.toString().endsWith(".txt"))
                    {
                        immagini[cont] = (R.drawable.txt);
                    }else if(title.toString().endsWith(".apk"))
                    {
                        immagini[cont] = (R.drawable.apk_icon);
                    }else if(title.toString().endsWith(".epub"))
                    {
                        immagini[cont] = (R.drawable.ebook_icon);
                    }else if(title.toString().endsWith(".ebook"))
                    {
                        immagini[cont] = (R.drawable.ebook_icon);
                    }else if(title.toString().endsWith(".7z"))
                    {
                        immagini[cont] = (R.drawable.appx7zipicon);
                    }else if(title.toString().endsWith(".m4a"))
                    {
                        immagini[cont] = (R.drawable.mp3icon);
                    }else if(title.toString().endsWith(".exe"))
                    {
                        immagini[cont] = (R.drawable.exe_icon);
                    }else if(title.toString().endsWith(".torrent"))
                    {
                        immagini[cont] = (R.drawable.torrent_icon);

                    }else if(title.toString().endsWith(".iso"))
                    {
                        immagini[cont] = (R.drawable.iso_icon);
                    }else if(title.toString().endsWith(".rmvb"))
                    {
                        immagini[cont] = (R.drawable.movieicon);
                    }else if(title.toString().endsWith(".mpg"))
                    {
                        immagini[cont] = (R.drawable.movieicon);
                    }
                    cont++;
                }
                    contatore2++;
                    titoli.add( title );
                    descrizioni.add("Dimensione: "+sizes );
                    indirizzo[cont] = href;


            }



                // inserisco nei rispettivi arraylist



            } catch (Exception e) {
                // gestione dell'eccezione
                // ad esempio mostrare messaggio di errore o altro (qui nel logcat)
                Log.e("ESEMPIO", "ERRORE NEL PARSING");
            }
            return null;
        }


        protected void onPostExecute(String result)
        {
            // dopo che ho eseguito il parsing mostro i dati nella listview
            if(titoli.size() > 0 || descrizioni.size() >0)
            {
                titoli.remove(0); titoli.remove(0);
                descrizioni.remove(0); descrizioni.remove(0);
            }


            if(adapter == null)
            {
                adapter = new ParsingArrayAdapter(c, titoli, descrizioni,immagini);
                lista.setAdapter(adapter);

            }else
            {
                lista.setAdapter(adapter);
            }











        }

    }
    public void setupSearchView(MenuItem searchItem) {

        if (isAlwaysExpanded()) {
            mSearchView.setIconifiedByDefault(false);

        } else {
            searchItem.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_IF_ROOM
                    | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
        }



        mSearchView.setOnQueryTextListener(this);
    }

    public boolean onQueryTextChange(String newText) {

        return false;
    }

    public boolean onQueryTextSubmit(String query) {
        search = query;

        ParsingPaginaWeb parsing2 = new ParsingPaginaWeb();
        parsing2.execute("");

        return false;
    }

    public boolean onClose() {

        return false;
    }

    protected static boolean isAlwaysExpanded() {
        return false;
    }

    public boolean isOnline(){
        ConnectivityManager cm =
                (ConnectivityManager) getActivity().getSystemService(getActivity().CONNECTIVITY_SERVICE);
        NetworkInfo netInfo = cm.getActiveNetworkInfo();
        if (netInfo != null && netInfo.isConnectedOrConnecting()) {
            return true;
        }
        return false;
    }
    public void paste(){

        android.text.ClipboardManager clipBoard = (android.text.ClipboardManager) getActivity().getSystemService(getActivity().CLIPBOARD_SERVICE);
        final String temp;
        temp = clipBoard.getText().toString();
        //Tab_Download.txt_url.setText("ciao"+temp);
        Toast.makeText(getActivity(),"Link Copiato con Successo",Toast.LENGTH_SHORT).show();
        if(temp.toString().startsWith("https://mega.co.nz"))
        {
            AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
            builder.setTitle("Scegli:")
                    .setMessage("Vuoi scaricare il files o vederlo in streaming?")
                    .setCancelable(false)
                    .setPositiveButton("Stream", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            if (temp.toString() != null) {

                                MainActivity.actionBar.setSelectedNavigationItem(2);
                                Tab_Streaming.txt_link_stream.setText(temp);
                                if (Tab_Streaming.txt_link_stream.getText() != null)
                                    Toast.makeText(getActivity(), "Link Incollato con Successo", Toast.LENGTH_SHORT).show();
                            } else {
                                Toast.makeText(getActivity(), "Prima devi copiare qualcosa!!", Toast.LENGTH_SHORT).show();
                            }

                        }
                    })
                    .setNegativeButton("Download", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            if (temp.toString() != null) {
                                MainActivity.actionBar.setSelectedNavigationItem(0);
                                Tab_Download.txt_url.setText(temp.toString());
                                if (Tab_Download.txt_url.getText() != null)

                                    Toast.makeText(getActivity(), "Link Incollato con Successo", Toast.LENGTH_SHORT).show();
                            } else {
                                Toast.makeText(getActivity(), "Prima devi copiare qualcosa!!", Toast.LENGTH_SHORT).show();
                            }


                        }
                    });
            AlertDialog alert = builder.create();
            alert.show();
            //Toast.makeText(getActivity(),"Link Incollato con Successo",Toast.LENGTH_SHORT).show();
            //MainActivity.actionBar.setSelectedNavigationItem(0);
        }
    }
    public void copy(){
        if(sdk < android.os.Build.VERSION_CODES.HONEYCOMB) {
            android.text.ClipboardManager clipboard = (android.text.ClipboardManager) getActivity().getSystemService(getActivity().CLIPBOARD_SERVICE);
            clipboard.setText(theUrl[0]);
            //txt_link.setText("");
            if(clipboard.getText().toString().compareTo("") != 0){

                Toast.makeText(getActivity(),"Link Copiato con Successo",Toast.LENGTH_SHORT).show();
            }
            else {
                Toast.makeText(getActivity(),"Non sono Riuscito a copiare nessun Link",Toast.LENGTH_SHORT).show();
            }
        } else {
            android.content.ClipboardManager clipboard = (android.content.ClipboardManager) getActivity().getSystemService(getActivity().CLIPBOARD_SERVICE);
            android.content.ClipData clip = android.content.ClipData.newPlainText("text label",theUrl[0]);
            clipboard.setPrimaryClip(clip);
            //txt_link.setText("");
        }
    }
    public static Tab_Search newInstance(String text) {

        Tab_Search f = new Tab_Search();
        Bundle b = new Bundle();
        b.putString("msg", text);

        f.setArguments(b);

        return f;
    }
    public void toast(String string) {
        Toast.makeText(getActivity(), string, Toast.LENGTH_SHORT).show();
    }
    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        mActivity = activity;
    }
    @Override
    public void onStop() {
        super.onStop();
        mActivity = this.getActivity();
        adapter = new ParsingArrayAdapter(mActivity, titoli, descrizioni,immagini);
        lista.setAdapter(adapter);
    }
}
public class选项卡\u Search扩展片段实现SearchView.onquerytextliner{
视图;
ListView lista;
int cont=0;
字符串搜索=”;
公共搜索视图;
ParsingPaginaWeb解析=新建ParsingPaginaWeb();
字符串[]indirizzo;
网络视图;
ParsingarayAdapter适配器;
int sdk=android.os.Build.VERSION.sdk\u int;
最终字符串[]URL=新字符串[1];
int-volte=0;
活动能力;
上下文c;
ArrayList titoli;//lista dei titoli
ArrayList Descriptioni;//lista delle Descriptioni
//艾玛基尼;
int[]伊玛吉尼;
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
super.onCreateView(充气机、容器、保存状态);
视图=充气机。充气(R.layout.tab\u搜索,容器,错误);
c=view.getContext();
setRetainInstance(真);
如果(savedInstanceState!=null){
返回视图;
}
webview=(webview)view.findviewbyd(R.id.web);
setWebViewClient(新的WebViewClient(){
公共void onPageFinished(WebView视图,字符串url){
url[0]=url;
System.out.println(URL[0]);
Toast.makeText(getActivity(),“Link:+url,Toast.LENGTH_SHORT).show();
复制();
粘贴();
}
});
webview.getSettings().setJavaScriptEnabled(true);
webview.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
webview.getSettings().setLoadWithOverview模式(true);
webview.getSettings().setUseWideViewPort(true);
webview.getSettings().setPluginsEnabled(true);
//web_view.getSettings().SetBuilTinZoomControl(真);
webview.getSettings().setSupportMultipleWindows(true);
webview.getSettings().setLoadsImagesAutomatically(true);
webview.getSettings().setLightTouchEnabled(true);
webview.getSettings().setDomStorageEnabled(true);
webview.getSettings().setLoadWithOverview模式(true);
lista=(ListView)view.findViewById(R.id.main_lista);//recupero lista da id
lista.setClickable(true);
setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(适配器视图arg0、视图arg1、内部位置、长arg3)
{
int posizione=位置+1;
loadUrl(indirizzo[position]);
}
});
//creo ed eseguo l'asynctask
解析。执行(“”);
返回视图;
}
@凌驾
已创建ActivityState上的公共无效(Bundle savedInstanceState)
{
super.onActivityCreated(savedInstanceState);
mActivity=this.getActivity();
}
私有类ParsingPaginaWeb扩展异步任务{
字符串标题;
字符串大小;
int cont=0;
int contatore2=0;
@凌驾
受保护的void onPreExecute()
{
//prima di eseguire il il Izzo gli arraylist
titoli=新的ArrayList();
descripioni=newarraylist();
//immagini=新的ArrayList();
伊玛基尼=新整数[500];
indirizzo=新字符串[500];
}
@凌驾
受保护的字符串doInBackground(字符串…参数){
试一试{
//注:控制进口货物
//all'INGISIO ci DEVEESSERE org.jsoup
//ricavo l'html della pagina con用户代理桌面(Chrome)
//e超时30000
Document doc=Jsoup.connect(“链接”+搜索)
.userAgent(“Mozilla/5.0(Windows NT 6.2;WOW64)AppleWebKit/537.22(KHTML,如Gecko)Chrome/25.0.1364.172 Safari/537.22”)
.get();
//普伦多拉塔酒店
public class ParsingArrayAdapter extends ArrayAdapter<String>{

    //riferimenti statici alle risorse e agli id
    private final static int LAYOUT = R.layout.riga_listview;
    private final static int TITOLO = R.id.riga_listview_titolo;
    private final static int DESCRIZIONE = R.id.riga_listview_descrizione;
    private final static int IMMAGINE = R.id.imageView;

    ArrayList<String> titoli; //lista dei titoli
    ArrayList<String> descrizioni;
    //ArrayList<Integer> immagini;//lista delle descrizioni
    int [] immagini;
    Context c; //context
    LayoutInflater inflater; //layout inflater

    public ParsingArrayAdapter(Context context, ArrayList<String> titoli, ArrayList<String> descrizioni, int[] immagini)
    {
        super(context,TITOLO);
        this.c = context;
        this.titoli = titoli;
        this.descrizioni = descrizioni;
        this.immagini = immagini;
        this.inflater = LayoutInflater.from(c);
    }

    @Override
    public int getCount()
    {
        return titoli.size(); //ritorno lunghezza lista ( = numero dei titoli)
    }

    //quando la lista richiede una view
    @Override
    public View getView(int pos,View view,ViewGroup parent)
    {
        CacheRiga cache; //cache
        if(view==null)//se � la prima volta che viene richiesta la view
        {
            // creo la view ma non l'attacco alla lista in quanto devo ancora modificare
            // i testi delle textview
            view = inflater.inflate(LAYOUT, parent,false); 
            cache = new CacheRiga(); //inizializzo la cache
            cache.titolo = (TextView) view.findViewById(TITOLO); //collego titolo
            cache.descrizione = (TextView) view.findViewById(DESCRIZIONE);//collego descrizione
            cache.img = (ImageView) view.findViewById(IMMAGINE);
            view.setTag(cache);//collego view con cache
        }
        else
        {
            cache = (CacheRiga) view.getTag(); //altrimenti prendo la cache dalla view
        }

        cache.titolo.setText(titoli.get(pos)); //imposto il titolo
        cache.descrizione.setText(descrizioni.get(pos));
       // if(pos>0)
        //{
            cache.img.setImageResource(immagini[pos]);
        //}
        // e la descrizione

        return view;
    }

    private class CacheRiga { // classe per la cache delle righe
        public TextView titolo; // cache titolo
        public TextView descrizione; // cache descrizione
        public ImageView img;
    }