2016-11-15 1 views
-1

자바 클래스의 데이터 (값)를 액티비티로 전달하고 textView에 표시하는 데 문제가 있습니다. SharedPreferences가 작동하지 않습니다. 이 내 클래스의 조각입니다 :Android 클래스에서 데이터를 활동으로 전달하는 방법?

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(); 
     } 
    } 

나는 활동에 텍스트 뷰 내 결과를 전달하려는. 이 활동 (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); 
    } 

도움을 주셔서 감사합니다.

+0

오타, 'username'과 'password'모두 동일한 열쇠입니까? –

+0

비슷한 질문이 있습니다 [여기] (http://stackoverflow.com/questions/12575068/how-to-get-the-result-of-onpostexecute-to-main-activity-because-asynctask-is-a) . – Makk0

+0

하지만 결과를 얻고 싶습니다. 그것은 mysql에서 json입니다. 암호 및 사용자 이름이 아닙니다. json에는 이름, 성, 나이 등의 정보가 있습니다.이 json을 가져 와서 파싱 한 다음 textViews에이 정보를 채 웁니다. – adamkocalek

답변

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 

당신은 이것을 호출하기 전에 sharedpreferences에 데이터를 저장하지 않으므로 사용자 이름과 암호 모두에 대해 null이 표시되고 아무 것도 표시되지 않습니다.

언제든지 데이터에 액세스하려면 먼저 데이터를 저장해야합니다.

//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

가 다른 응용 프로그램의 실행 사이의 데이터를 저장하는 데 사용됩니다 (당신을 가까이하고 응용 프로그램을 열고, 당신은 당신이 언젠가 먼저 데이터를 저장 제공, 데이터에 액세스 할 수 있습니다).

+0

하지만 결과를 내고 싶습니다. 그것은 mysql에서 json입니다. 암호 및 사용자 이름이 아닙니다. json에는 이름, 성, 나이 등의 정보가 있습니다.이 json을 가져 와서 파싱 한 다음 textViews에이 정보를 채 웁니다. – adamkocalek

+0

이 경우 정보를 보유 할 백엔드 DB가 있으므로 sharedpreferences가 필요하지 않습니다. DB에서 읽어야합니다. – SoulRayder

관련 문제