2014-11-21 4 views
0

editorActivity 클래스에 텍스트 입력을 저장하기 위해 Button을 추가하는 데 문제가 있습니다. Activity 메모 항목을보고 편집하고 저장하도록 지정했습니다.저장 버튼 | 메모 응용 프로그램

클래스는 뒤로 버튼 (하드웨어) 및 앱 실행 아이콘을 사용하여 key/value 쌍을 SharedPreferences 개체에 저장합니다. 같은 것을 할 Button을 추가하고 싶습니다.

나는 진술 콘솔에서 오류가 발생합니다 :

res\layout\activity_note_editor.xml:18: error: Error: No resource found that matches the given name (at 'text' with value '@string/Save'). 

나는 이것이 무엇을 의미하는지 모르겠어요. 그리고이 오류를 해결해야 할 부분에 대한 지침을 알려 주시면 감사하겠습니다.

이것은 내가 지금까지 무엇을 가지고 :

private NoteItem note; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_note_editor);     // Load custom note edit layout 
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);   // Launcher icon becomes an options button = home 

    Intent intent = this.getIntent();   // Reference to intent object in first activity 
    note = new NoteItem(); 
    note.setKey(intent.getStringExtra("key")); // retrieve key and saved in note object 
    note.setText(intent.getStringExtra("text")); // Retrieve text and save in note object 

    EditText et = (EditText) findViewById(R.id.noteText); 
    et.setText(note.getText()); 
    et.setSelection(note.getText().length()); 
} 

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     // launcher icon sends data back to main activity 
public boolean onOptionsItemSelected(MenuItem item) { 
    if (item.getItemId() == android.R.id.home) {    
     saveAndFinish(); 
    } 
    return false;           
} 

@Override      // device back button sends data back to main activity 
public void onBackPressed() { 
    saveAndFinish(); 
} 

public void addListenerOnButton(){ 

    Button button = (Button) findViewById(R.id.save); 

    button.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View view) { 
      saveAndFinish(); 
     } 
    }); 

} 
} 
+0

같은 * 아무것도해야, 그것은 * 명시 적으로 * 그 [문자열 리소스 (HTTP를 상태 : 액세스중인 /developer.android.com/guide/topics/resources/string-resource.html#String)이 존재하지 않습니다. 그것을 창조하십시오. – 323go

+0

@ 323go 그는 그가 다음과 같은 튜토리얼의 해당 섹션을 놓쳤거나 어떻게 든 워드 프로세서에 놓친 것처럼 그것을 만드는 방법을 분명히 이해하지 못합니다. – codeMagic

답변

4

나는 이것이 무엇을 의미하는지 모르겠어요.

그것은 당신이 "저장"의 식별자 strings.xml

당신이 그 문제에 @String, 또는 @anyAndroidResource을 사용

, 그것은 해당 파일에 보이는 당신의 resource이없는 것을 의미한다. 따라서 @drawable은 사용 된 식별자가 무엇이든 drawables 폴더 안에 있습니다.

values/strings.xml에서는 그것은 * 의미하지 않는다

<string name="Save">Save</string> 

Resources Docs

Resources Overview Docs

+0

Thanks @codeMagic. strings.xml 파일에 리소스를 만들었습니다. 이제 onClickListener 메서드 호출 구문에 문제가 있습니다. 내 onClickListener 메서드 앞에 onBackPressed 메서드에 대한 구문 오류가 나타납니다. ide는 onBackPressed 메소드에 대해 닫는 "}"을 삭제하라고 알려줍니다. 닫는 "}"이 필요한 경우 삭제하는 이유가 확실하지 않습니다. –

+0

이것은 나의 새로운 onClickListener 메소드 코드입니다 :'final Button button = (Button) findViewById (R.id.saveButton); button.setOnClickListener (새 View.OnClickListener() { 공공 무효 온 클릭 (보기 V) { \t button.setText ("저장!"); \t saveAndFinish(); } }); }' –

+0

@LuisFelipe 그것은 다른 이슈이고 자체 게시물에 있어야하므로 다른 사람들에게 더 명확하고 좀 더 자세히 설명해야합니다. 내가 말할 것은 코드가 메소드 안에 있는지 확인하는 것입니다. – codeMagic