2016-07-11 20 views
0

Ich habe versucht, Methoden auf der Hauptaktivität von einer anderen Klasse aufzurufen. Aber die Methoden sind nicht gelöst. Schau dir den Code an.Rückrufe von einer anderen Klasse

package com.example.android.andhive_glideimagelib.activity; 

import android.app.ProgressDialog; 
import android.media.Image; 
import android.os.Bundle; 
import android.support.v4.app.FragmentTransaction; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.DefaultItemAnimator; 
import android.support.v7.widget.GridLayoutManager; 
import android.support.v7.widget.RecyclerView; 
import android.support.v7.widget.Toolbar; 
import android.util.Log; 
import android.view.View; 

import com.android.volley.Response; 
import com.android.volley.VolleyError; 
import com.android.volley.toolbox.JsonArrayRequest; 
import com.example.android.andhive_glideimagelib.R; 
import com.example.android.andhive_glideimagelib.adapter.GalleryAdapter; 
import com.example.android.andhive_glideimagelib.app.AppController; 

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

import java.util.ArrayList; 

public class MainActivity extends AppCompatActivity { 

    private String TAG = MainActivity.class.getSimpleName(); 
    private static final String endpoint = "http://api.androidhive.info/json/glide.json"; 
    private ArrayList<Image> images; 
    private ProgressDialog pDialog; 
    private GalleryAdapter mAdapter; 
    private RecyclerView recyclerView; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

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

     recyclerView = (RecyclerView) findViewById(R.id.recycler_view); 

     pDialog = new ProgressDialog(this); 
     images = new ArrayList<>(); 
     mAdapter = new GalleryAdapter(getApplicationContext(), images); 

     RecyclerView.LayoutManager mLayoutManager = new GridLayoutManager(getApplicationContext(), 2); 
     recyclerView.setLayoutManager(mLayoutManager); 
     recyclerView.setItemAnimator(new DefaultItemAnimator()); 
     recyclerView.setAdapter(mAdapter); 

     recyclerView.addOnItemTouchListener(new GalleryAdapter.RecyclerTouchListener(getApplicationContext(), recyclerView, new GalleryAdapter.ClickListener() { 
      @Override 
      public void onClick(View view, int position) { 
       Bundle bundle = new Bundle(); 
       bundle.putSerializable("images", images); 
       bundle.putInt("position", position); 

       FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 
       SlideshowDialogFragment newFragment = SlideshowDialogFragment.newInstance(); 
       newFragment.setArguments(bundle); 
       newFragment.show(ft, "slideshow"); 
      } 

      @Override 
      public void onLongClick(View view, int position) { 

      } 
     })); 

     fetchImages(); 
    } 

    private void fetchImages() { 

     pDialog.setMessage("Downloading json..."); 
     pDialog.show(); 

     JsonArrayRequest req = new JsonArrayRequest(endpoint, 
       new Response.Listener<JSONArray>() { 
        @Override 
        public void onResponse(JSONArray response) { 
         Log.d(TAG, response.toString()); 
         pDialog.hide(); 

         images.clear(); 
         for (int i = 0; i < response.length(); i++) { 
          try { 
           JSONObject object = response.getJSONObject(i); 
           Image image = new Image(); 
           image.setName(object.getString("name")); 

           JSONObject url = object.getJSONObject("url"); 
           image.setSmall(url.getString("small")); 
           image.setMedium(url.getString("medium")); 
           image.setLarge(url.getString("large")); 
           image.setTimestamp(object.getString("timestamp")); 

           images.add(image); 

          } catch (JSONException e) { 
           Log.e(TAG, "Json parsing error: " + e.getMessage()); 
          } 
         } 

         mAdapter.notifyDataSetChanged(); 
        } 
       }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 
       Log.e(TAG, "Error: " + error.getMessage()); 
       pDialog.hide(); 
      } 
     }); 

     // Adding request to request queue 
     AppController.getInstance().addToRequestQueue(req); 
    } 
} 

Die Klasse,

package com.example.android.andhive_glideimagelib.model; 

import java.io.Serializable; 

public class Image implements Serializable { 
    private String name; 
    private String small, medium, large; 
    private String timestamp; 

    public Image() { 
    } 

    public Image(String name, String small, String medium, String large, String timestamp) { 
     this.name = name; 
     this.small = small; 
     this.medium = medium; 
     this.large = large; 
     this.timestamp = timestamp; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public String getSmall() { 
     return small; 
    } 

    public void setSmall(String small) { 
     this.small = small; 
    } 

    public String getMedium() { 
     return medium; 
    } 

    public void setMedium(String medium) { 
     this.medium = medium; 
    } 

    public String getLarge() { 
     return large; 
    } 

    public void setLarge(String large) { 
     this.large = large; 
    } 

    public String getTimestamp() { 
     return timestamp; 
    } 

    public void setTimestamp(String timestamp) { 
     this.timestamp = timestamp; 
    } 
} 

ich die Methoden der Image-Klasse nicht aufrufen können. Danke für die Hilfe !

+0

Welche Methode wurde nicht aufgelöst? –

+2

'import android.media.Image;' - Sie haben die Klasse 'Image' von Android importiert. Entfernen Sie diese 'import' -Anweisung und importieren Sie stattdessen Ihre Klasse. –

+0

sollten Sie nicht importieren Sie android.media.Image Android Standard-Klassennamen Bild in Ihre benutzerdefinierte Klasse. – karan

Antwort

-1

in der Bildklasse machen es statische Methode Beispiel:

public static void setSmall (String small) {

this.small = klein; }

in MainActivity Image.setSmall ("Wert");

Verwandte Themen