2017-05-19 11 views
0

Ich habe Zweifel bezüglich Android. Das Hauptmerkmal meiner App ist das Fotografieren verschiedener Objekte egal welche Objekte. Ich habe ein Hauptmenü, wo ich das tun kann und eine andere Ansicht habe, wo ich einen Knopf habe, um auch ein Foto zu machen, also kann ich es grundsätzlich in 2 verschiedenen Ansichten machen, der Code sollte gleich sein.Funktion wiederverwenden über mehrere Aktivitäten

Ich möchte den Code in eine leere Erfassungsaktivität einfügen und in verschiedenen Ansichten wiederverwenden, wie kann ich das tun?

Mein Code zu erfassen:

private void sendImage(String encodedImage){ 
    //inicialize a map with pair key value 
    Map<String, String> params = new HashMap<String, String>(); 


    // Add form fields to the map 
    params.put("base64", encodedImage); 
    URL = URL + "\\" + "Tulipa"; 
    Log.d("url",URL); 



    /** 
    * Efetua um pedido ao servidor 
    * 
    * @param URl url do servidor a aceder 
    * @param JSONObject objeto json a ser retornado através do access point 
    * 
    */ 
    JsonObjectRequest request = new JsonObjectRequest(URL, new JSONObject(params), 
      new Response.Listener<JSONObject>() { 
       @Override 
       public void onResponse(JSONObject response) { 
        //TODO verificar o status code da resposta apenas deverá fazer login caso seja 200 
        Intent i = new Intent(MainMenu.this,MainMenu.class); 
        startActivity(i); 
        finish(); 
       } 
      }, new Response.ErrorListener() { 
     @Override 
     public void onErrorResponse(VolleyError error) { 
      String body; 

      if(error.networkResponse.data!=null) { 
       String statusCode = String.valueOf(error.networkResponse.statusCode); 
       try { 
        body = new String(error.networkResponse.data,"UTF-8"); 
        JSONObject jsonObj = new JSONObject(body); 
        Log.d("body",String.valueOf(jsonObj.get("message"))); 
        showToast(String.valueOf(jsonObj.get("message"))); 
       } catch (UnsupportedEncodingException e) { 
        showToast("You need to connect to the internet!"); 
       } catch (JSONException e) { 
        Log.d("json:","problems decoding jsonObj"); 
       } 
      } 

      //do stuff with the body... 
     } 
    }); 

    request.setRetryPolicy(new DefaultRetryPolicy(60000, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT)); 
    queue.add(request); // adiciona a request à queue pronta a ser executada 
}` 

Antwort

1

zunächst eine Grundaktivität erstellen:

public abstract class BaseActivity extends AppCompatActivity{ 
    protected void sendImage(String encodedImage){ 
     //inicialize a map with pair key value 
     Map<String, String> params = new HashMap<String, String>(); 


     // Add form fields to the map 
     params.put("base64", encodedImage); 
     URL = URL + "\\" + "Tulipa"; 
     Log.d("url",URL); 



     /** 
     * Efetua um pedido ao servidor 
     * 
     * @param URl url do servidor a aceder 
     * @param JSONObject objeto json a ser retornado através do access point 
     * 
     */ 
     JsonObjectRequest request = new JsonObjectRequest(URL, new JSONObject(params), 
       new Response.Listener<JSONObject>() { 
        @Override 
        public void onResponse(JSONObject response) { 
         //TODO verificar o status code da resposta apenas deverá fazer login caso seja 200 
         Intent i = new Intent(MainMenu.this,MainMenu.class); 
         startActivity(i); 
         finish(); 
        } 
       }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 
       String body; 

       if(error.networkResponse.data!=null) { 
        String statusCode = String.valueOf(error.networkResponse.statusCode); 
        try { 
         body = new String(error.networkResponse.data,"UTF-8"); 
         JSONObject jsonObj = new JSONObject(body); 
         Log.d("body",String.valueOf(jsonObj.get("message"))); 
         showToast(String.valueOf(jsonObj.get("message"))); 
        } catch (UnsupportedEncodingException e) { 
         showToast("You need to connect to the internet!"); 
        } catch (JSONException e) { 
         Log.d("json:","problems decoding jsonObj"); 
        } 
       } 

       //do stuff with the body... 
      } 
     }); 

     request.setRetryPolicy(new DefaultRetryPolicy(60000, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT)); 
     queue.add(request); // adiciona a request à queue pronta a ser executada 
    }` 

} 

dann die Aktivitäten machen Sie dieses Verhalten Klasse

public class MyActivity1 extends BaseActivity{ 

    public void yourMethod(){ 
     sendImage("your string"); 
    } 
} 
verlängern haben müssen

andere Aktivität

public class MyActivity2 extends BaseActivity{ 

    public void yourMethod(){ 
     sendImage("your string"); 
    } 
} 
2
public class ImageHandler{ 
    public static void sendImage(String encodedImage){ 
     .... 
    } 
} 

in MainActivity: ImageHandler.sendImage("myString");

Jonathan Aste Antwort ist auch gut, wenn man das Bild von Aktivitäten senden müssen, wenn Sie sie von Aktivitäten/anderen Klassen schicken möchten, können Sie mein

beantworten verwenden
Verwandte Themen