2014-11-25 2 views
0

그래서 저는 온라인 자습서를 따라 만든 앱을 배우려고하고 있습니다. 그것은 단순한, 맨손의 뼈, 메모 복용 응용 프로그램입니다. mainActivity는 목록보기에서 메모 개체 만 표시합니다. 두 번째 화면/활동은 내가 할 수있는 곳에서 코드를 추가하려고 현재 작업하고있는 화면입니다. 지금까지 간단히 텍스트/문자열 값을 저장하고 사용자를 주 활동으로 되돌려 놓을 저장 버튼을 추가했습니다. 나는 onButtonSave 방법의 내 구현에 관한 몇 가지 의견을 싶습니다저장 버튼 코드의 올바른 사용

public class NoteEditorActivity extends Activity { 

private NoteItem note; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_note_editor); 
    getActionBar().setDisplayHomeAsUpEnabled(true); 

    Intent intent = this.getIntent(); 
    note = new NoteItem(); 
    note.setKey(intent.getStringExtra("key")); 
    note.setText(intent.getStringExtra("text")); 

    EditText et = (EditText) findViewById(R.id.noteText); 
    et.setText(note.getText()); 
    et.setSelection(note.getText().length()); 
    // I'm wondering if this is the correct way to call my onButtonSave method 
    onButtonSave(); 
} 

private void saveAndFinish() { 
    EditText et = (EditText) findViewById(R.id.noteText); 
    String noteText = et.getText().toString(); 

    Intent intent = new Intent(); 
    intent.putExtra("key", note.getKey()); 
    intent.putExtra("text", noteText); 
    setResult(RESULT_OK, intent); 
    finish(); 

} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    if (item.getItemId() == android.R.id.home) { 
     saveAndFinish(); 
    } 
    return false; 
} 

@Override 
public void onBackPressed() { 
    saveAndFinish(); 
} 

// This is the code I've added for the save button. 
public void onButtonSave(){ 
final Button button = (Button) findViewById(R.id.saveButton); 
button.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 
     button.setText("Saved!"); 
     saveAndFinish(); } 
    }); 
    } 

} 
+0

무엇이 당신의 질문입니까? 정확히 무엇에 대한 피드백? 작동하지 않습니까? – codeMagic

+0

명확하지 않으면 죄송합니다. 그것은 효과가있다. 메소드를 작성하고 onCreate()에서 호출 한 방식이 올바른지 알고 싶습니다. 내 논리에 대한 피드백을 통해 애플리케이션에 새로운 요소를 구현하는 방법에 대해, 나는 올바른 방향에 있는지 알고 싶습니다. @codeMagic –

+0

당신은 그 함수를'onButtonSave()'라고 불렀습니다. 당신이 스스로 부르면 안되는 핸들러처럼 보이므로 좋지 않습니다. installSaveButton과 같은 것으로 이름을 바꾸는 것이 좋습니다. 그러나 그 때 나는 당신이 왜 그것을 위해 별도의 기능이 필요한지 궁금합니다. onCreate에서 모든 것을 개선하십시오. – greenapps

답변

0

난 당신이 모든 경우를 포함했는지 여부에 관해서 궁금 가정합니다. onCreate의 청취자 및 UI 구성 요소를 별도의 메서드로 분해하면 많은 것들을 초기화 할 때 가독성을 향상시킬 수 있습니다.

뒤로 버튼을 사용하면 케이스를 덮을 수 있습니다.

사용자가 버튼을 누르면 케이스가 덮여 있습니다.

볼 수있는 것부터 화면을 떠나는 메뉴 선택으로 케이스를 커버 할 수 있습니다. 몇 사람이 화면이 배경에 있는지 여부를 감지하는 방법에 대해 가장 잘 이야기했습니다. 모든 사례를 실제로 포착하려는 경우 onPause() 활동 내에서 저장을 할 수 있습니다. 이 버튼은 등을 누르거나 집에 가거나 다른 활동을 호출하면 해고됩니다.

다른 활동과 홈 버튼을 구별하는 것은 어렵습니다. 그러나 어떤 사람들은이를 감지하는 방법으로 onUserHint()을 지적했습니다. 그냥 내가 당신의 질문에 대해 이해할 수있는 약간의 피드백을 줄 것이라고 생각했습니다.