2016-02-13 66 views
0

當我使用2按鈕,1來獲取URL和第二個將其保存在SharedPreference中,但是當我嘗試在第二個按鈕中包含FETCH方法時,它不是將URL保存在SharedPreference中,因此不會將其發送到第二頁。我怎樣才能使它只用1個按鈕? 請幫忙。 Tqvm先進。剛開始學習有關android的任何解釋都非常感謝。圖像沒有顯示的基礎上單擊按鈕

1.MainActivity.java

public class MainActivity extends AppCompatActivity implements View.OnClickListener{ 

private ImageView iv; 
private Button buttonGet, buttonDisplay; 
private EditText adminUsername, imageUrl; 
private ProgressDialog loading; 

String imagePath; 


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

    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 
    StrictMode.setThreadPolicy(policy); 

    iv = (ImageView)findViewById(R.id.imageView); 

    buttonGet = (Button)findViewById(R.id.buttonGet); 
    buttonGet.setOnClickListener(this); 

    buttonDisplay = (Button) findViewById(R.id.buttonDisplay); 
    buttonDisplay.setOnClickListener(this); 

    adminUsername = (EditText) findViewById(R.id.etAdminUserName); 
    imageUrl = (EditText) findViewById(R.id.etImageUrl); 

} 


private void getData() { 
    loading = ProgressDialog.show(this,"Please wait...","Fetching...",false,false); 

    String url = Config.DATA_URL+adminUsername.getText().toString().trim(); 

    StringRequest stringRequest = new StringRequest(url, new Response.Listener<String>() { 
     @Override 
     public void onResponse(String response) { 
      loading.dismiss(); 
      showJSON(response); 
     } 
    }, 
      new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 
        Toast.makeText(MainActivity.this,error.getMessage().toString(),Toast.LENGTH_LONG).show(); 
       } 
      }); 

    RequestQueue requestQueue = Volley.newRequestQueue(this); 
    requestQueue.add(stringRequest); 
} 



private void showJSON(String response){ 
    String image=""; 

    try { 
     JSONObject jsonObject = new JSONObject(response); 
     JSONArray result = jsonObject.getJSONArray(Config.JSON_ARRAY); 
     JSONObject employeeData = result.getJSONObject(0); 
     image = employeeData.getString(Config.KEY_IMAGE); 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 

    imageUrl.setText(image); 
    imagePath = image; 

} 

public void saveSettings(View v){ 
    //Toast.makeText(getApplicationContext(), "Saving Data...", Toast.LENGTH_SHORT).show(); 
    SharedPreferences preferences = getSharedPreferences("UserDetails", MODE_PRIVATE); 
    SharedPreferences.Editor editor = preferences.edit(); 

    //editor.putString("passUsername", adminUsername.getText().toString()); 
    editor.putString("imageUrl", imagePath); 

    editor.commit(); 
    finish(); 
} 



@Override 
public void onClick(View v) { 

    switch (v.getId()){ 
     case R.id.buttonGet: 

      getData(); 
      break; 
     case R.id.buttonDisplay: 
      getData(); 
      saveSettings(v); 
      Intent secondPage = new Intent(this, Main2Activity.class); 
      startActivity(secondPage); 

      break; 
    } 
} 
} 

2.Main2Activity.java

public class Main2Activity extends AppCompatActivity { 

ImageView Iv2; 
String sendImagePath; 
EditText editText; 

private Bitmap bitmap; 

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

    Iv2 = (ImageView) findViewById(R.id.imageView2); 
    editText = (EditText) findViewById(R.id.editText); 

    loadSettings(); 

    bitmap = getBitmapFromUrl(sendImagePath); 
    Iv2.setImageBitmap(bitmap); 

    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); 
    StrictMode.setThreadPolicy(policy); 


} 


private void loadSettings(){ 
    //Toast.makeText(getApplicationContext(), "Loading Data...", Toast.LENGTH_LONG).show(); 
    SharedPreferences preferences = getSharedPreferences("UserDetails", MODE_PRIVATE); 

    // If value for key not exist then 
    // return second param value - In this case "..." 
    sendImagePath = preferences.getString("imageUrl", "..."); 
    editText.setText(sendImagePath); 



} 

public Bitmap getBitmapFromUrl(String src) { 
    try { 
     URL url = new URL(src); 
     HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 
     connection.setDoInput(true); 
     connection.connect(); 
     InputStream input = connection.getInputStream(); 
     Bitmap myBitmap = BitmapFactory.decodeStream(input); 
     return myBitmap; 
    } catch (Exception e) { 
     e.printStackTrace(); 
     return null; 
    } 
} 
} 

3.Config.java

public class Config { 
public static final String DATA_URL = "http://10.0.3.2/folder/getPic.php?username="; 
public static final String KEY_IMAGE = "image"; 
public static final String JSON_ARRAY = "result"; 
} 

回答

1

您正在試圖獲得imagePath前截擊能得到你的請願的迴應。嘗試類似這樣的:

@Override 
     public void onResponse(String response) { 
      loading.dismiss(); 
      showJSON(response); 
      saveSettings(); 
      Intent secondPage = new Intent(MainActivity.this, Main2Activity.class); 
      startActivity(secondPage); 

     } 
    }, 

. 
. 
. 

    @Override 
    public void onClick(View v) { 
      getData(); 
    } 
} 
+0

Tqvm man。實際上我花了大約1天時間來解決這個問題。 tq再次。 –