2016-11-15 2 views
-1

Ich habe ein Problem mit der Weitergabe von Daten (Werte) von Java-Klasse zu Aktivität und Anzeige in TextView. Sharedpreferences funktioniert nicht. Dies ist Fragment aus meiner Klasse:Android Wie Daten von Klasse zu Aktivität übergeben?

else if (type.equals("getUser")) { 
      try { 
       String user_name = params[1]; 
//    String password = params[2]; 
       URL url = new URL(getUser_url); 
       HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection(); 
       httpURLConnection.setRequestMethod("POST"); 
       httpURLConnection.setDoOutput(true); 
       httpURLConnection.setDoInput(true); 
       OutputStream outputStream = httpURLConnection.getOutputStream(); 
       BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream, "UTF-8")); 
//    String post_data = URLEncoder.encode("user_name", "UTF-8") + "=" + URLEncoder.encode(user_name, "UTF-8") + "&" 
//      + URLEncoder.encode("password", "UTF-8") + "=" + URLEncoder.encode(password, "UTF-8"); 
       String post_data = URLEncoder.encode("user_name", "UTF-8") + "=" + URLEncoder.encode(user_name, "UTF-8"); 
       bufferedWriter.write(post_data); 
       bufferedWriter.flush(); 
       bufferedWriter.close(); 
       outputStream.close(); 
       InputStream inputStream = httpURLConnection.getInputStream(); 
       BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream, "iso-8859-1")); 
       String result = ""; 
       String line = ""; 
       while ((line = bufferedReader.readLine()) != null) { 
        result += line; 
       } 
       bufferedReader.close(); 
       inputStream.close(); 
       httpURLConnection.disconnect(); 
       System.out.println(result); 
       return result; 
      } catch (MalformedURLException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
     return null; 
@Override 
    protected void onPostExecute(String result) { 
     String temp = "Login success. Welcome!"; 

     if (result.equals(temp)) { 
      Intent intent = new Intent(context, ProjectsActivity.class); 
      context.startActivity(intent); 
     } else if (result.contains("[{")) { 

     } else { 
      alertDialog.setMessage(result); 
      alertDialog.show(); 
     } 
    } 

und ich möchte mein Ergebnis passieren in Aktivität zu Textview. Diese Aktivität (UserAreaActivity).

public class UserAreaActivity extends AppCompatActivity{ 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_user_area); 


     TextView textViewUserArea = (TextView) findViewById(R.id.textViewUserArea); 
     EditText editTextName = (EditText) findViewById(R.id.editTextName); 
     EditText editTextSurname = (EditText) findViewById(R.id.editTextrSurname); 
     EditText editTextUsername = (EditText) findViewById(R.id.editTextUsername); 
     EditText editTextPassword = (EditText) findViewById(R.id.editTextPassword); 
     EditText editTextAge = (EditText) findViewById(R.id.editTextAge); 

// 
     String type = "getUser"; 
     BackgroundWorker backgroundWorker = new BackgroundWorker(this); 
     backgroundWorker.execute(type, username); 
    } 

Vielen Dank für jede Hilfe.

+0

Ist es ein Tippfehler, gleiche Taste für "Benutzername" und "Passwort"? –

+0

Eine ähnliche Frage wurde gestellt [hier] (http://stackoverflow.com/questions/12575068/how-to-get-the-result-of-onpostexecute-to-main-activity-because-asynctask-is-a) . – Makk0

+0

Aber ich möchte ein Ergebnis machen. Es ist Json von MySQL. Nicht Passwort und Benutzername. In JSON gibt es Informationen wie Name, Vorname, Alter usw. Ich möchte diesen JSON nehmen und analysieren, dann TextViews mit diesen Informationen füllen. – adamkocalek

Antwort

1
SharedPreferences myprefs = getSharedPreferences("user", MODE_WORLD_READABLE); 
    String username = myprefs.getString("username", null); 
    String password = myprefs.getString("password", null); //Typo, you had used "username" here 

Sie Ihre Daten nicht in sharedpreferences speichern, bevor diese anrufen, damit erhalten Sie sowohl für Benutzername und Passwort für null und Sie nichts sehen.

Sie müssen zuerst Ihre Daten speichern, bevor Sie jederzeit darauf zugreifen können.

//Code for writing into shared preferences 

    SharedPreferences myprefs = getSharedPreferences("user", MODE_WORLD_READABLE); 
    myprefs.edit().putString("username","Name to be saved").commit(); 
    myprefs.edit().putString("password","Password to be saved").commit(); 

SharedPreferences verwendet wird, um Daten zwischen verschiedenen App Ausführungen zu speichern (Wenn Sie zu schließen und öffnen Sie Ihre App, werden Sie in der Lage sein, auf Daten zuzugreifen, sofern Sie die Daten irgendwann zuerst speichern).

+0

Aber ich möchte ein Ergebnis machen. Es ist Json von MySQL. Nicht Passwort und Benutzername. In JSON gibt es Informationen wie Name, Vorname, Alter usw. Ich möchte diesen JSON nehmen und analysieren, dann TextViews mit diesen Informationen füllen. – adamkocalek

+0

In diesem Fall würden Sie überhaupt keine gemeinsamen Präferenzen benötigen ... da Sie eine Backend-DB haben, um die Informationen zu behalten. Sie müssen aus Ihrer Datenbank lesen – SoulRayder

Verwandte Themen