2016-11-17 1 views
2

다른 클래스의 edittext에 문자열 배열 항목을 할당하면 사용자 모드 사용자가 edittext를 변경할 때 항목이 변경됩니다. 나는이 코드를 가지고 있으며 결과적으로 기본 edittext 문자열 (디자이너 모드)의 형태로 항목을 얻는다. 나는 사용자가 edittext를 변경하는 동시에 변경되기를 원합니다. Plese 도움말. '개인 무효 kidaj() {다른 클래스의 edittext에 문자열 배열 항목을 할당하면 사용자 모드 사용자가 edittext를 변경할 때 항목이 변경됩니다.

 LayoutInflater factory = getLayoutInflater(); 
     View regisText = factory.inflate(R.layout.activity_moj_recept1, null); 
     EditText user = (EditText) regisText.findViewById(R.id.seees); 
     String usr = user.getText().toString(); 
     recepies[0]=usr; 

이는

private final static String STORETEXT ="storetext.txt"; 
private final static String STORETEXT1="storetext1.txt"; 
private final static String STORETEXT2="storetext2.txt"; 


private EditText txtEditor; 
private EditText txtEditor1; 
private EditText txtEditor2; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_moj_recept1); 
    txtEditor=(EditText)findViewById(R.id.seees); 
    txtEditor1=(EditText)findViewById(R.id.seees1); 
    txtEditor2=(EditText)findViewById(R.id.seees2); 
    readFileInEditor(); 
    readFileInEditor1(); 
    readFileInEditor2(); 

} 
public void saveClicked(View v) { 

    try { 

     OutputStreamWriter out = new OutputStreamWriter(openFileOutput(STORETEXT, 0)); 

     out.write(txtEditor.getText().toString()); 
     out.close(); 

     OutputStreamWriter out1=new OutputStreamWriter(openFileOutput(STORETEXT1, 0)); 

     out1.write(txtEditor1.getText().toString()); 
     out1.close(); 

     OutputStreamWriter out2=new OutputStreamWriter(openFileOutput(STORETEXT2, 0)); 

     out2.write(txtEditor2.getText().toString()); 
     out2.close(); 

     Toast.makeText(this, "RECEPT JE SAČUVAN", Toast.LENGTH_LONG).show(); 

    } 

    catch (Throwable t) { 

     Toast.makeText(this, "Exception: "+t.toString(), Toast.LENGTH_LONG).show(); 

    } 

} 
public void readFileInEditor() 

{ 

    try { 

     InputStream in = openFileInput(STORETEXT); 

     if (in != null) { 

      InputStreamReader tmp = new InputStreamReader(in); 

      BufferedReader reader = new BufferedReader(tmp); 

      String str; 

      StringBuilder buf = new StringBuilder(); 

      while ((str = reader.readLine()) != null) { 

       buf.append(str); 

      } 

      in.close(); 

      txtEditor.setText(buf.toString()); 

     } 

    } 

    catch (java.io.FileNotFoundException e) { 

    } 

    catch (Throwable t) { 

     Toast.makeText(this, "Exception: "+t.toString(), Toast.LENGTH_LONG).show(); 

    } 

} 
public void readFileInEditor1() 

{ 

    try { 

     InputStream in1 = openFileInput(STORETEXT1); 

     if (in1 != null) { 

      InputStreamReader tmp1 = new InputStreamReader(in1); 

      BufferedReader reader1 = new BufferedReader(tmp1); 

      String str1; 

      StringBuilder buf1 = new StringBuilder(); 

      while ((str1 = reader1.readLine()) != null) { 

       buf1.append(str1); 

      } 

      in1.close(); 

      txtEditor1.setText(buf1.toString()); 

     } 

    } 

    catch (java.io.FileNotFoundException e) { 

    } 

    catch (Throwable t) { 

     Toast.makeText(this, "Exception: "+t.toString(), Toast.LENGTH_LONG).show(); 

    } 

} 
public void readFileInEditor2() 

{ 

    try { 

     InputStream in2 = openFileInput(STORETEXT2); 

     if (in2 != null) { 

      InputStreamReader tmp2 = new InputStreamReader(in2); 

      BufferedReader reader2 = new BufferedReader(tmp2); 

      String str2; 

      StringBuilder buf2 = new StringBuilder(); 

      while ((str2 = reader2.readLine()) != null) { 

       buf2.append(str2); 

      } 

      in2.close(); 

      txtEditor2.setText(buf2.toString()); 

     } 

    } 

    catch (java.io.FileNotFoundException e) { 

    } 

    catch (Throwable t) { 

     Toast.makeText(this, "Exception: "+t.toString(), Toast.LENGTH_LONG).show(); 

    } 

} 

기타 클래스} 내가 잘못지고 있지 않다 경우

답변

2

, 당신은 같은 항목의 값을 변경하는 textChangedListener를 추가 할에게 사용자가 EditText에서 값을 변경합니다.

현재 TextChangedListener을 사용할 수 있습니다 : 당신은 당신의 필요에 따라 작업을 수행 할 수 있습니다

EditText myEditTextField = new EditText(this); 

myEditTextField.addTextChangedListener(new TextWatcher() { 
     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

     } 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 

     } 

     @Override 
     public void afterTextChanged(Editable s) { 

     } 
    }); 

. 이 3 가지 방법이 있습니다

그래서 임시 변수를 만들 수 있습니다

2.onTextChanged

3.afterTextChanged

을 1.beforeTextChanged을하고 텍스트 변경으로, 그 때마다의 값을 저장 변수 값을 변경하고 메소드에서 명령을 내리면 작업이 수행됩니다.

희망이 도움이됩니다.

+1

답변을 주셔서 감사합니다.하지만 시도해 보았습니다. 시도가 성공적이지 않았습니다. 아마도 해결책이 아니거나 제대로 시도하지 않았을 수 있습니다. 어쨌든 답장을 보내 주셔서 대단히 감사합니다. –

+0

문제를 해결 했어야합니다 (제 생각에). 미안하지만, 당신의 환영 선생님 :) 미스터 @ MilošVukadinović – Swr7der

+0

좋아, 나는 다른 클래스에있는 storetext.txt에 recepies [0]을 할당해야한다는 것을 깨달았다. 어떻게하는지 말해 줄 수 있니? –

관련 문제