2016-07-05 5 views
0

私はメモを書くためのアプリを持っています。 EditNote.javaViewNote.javaの間に問題があります。既存のメモを更新する場合は、更新されたメモを保存するためにFABをクリックすると、表示されるテキストが古いものになります。その後、現在の活動ViewNote.javaを閉じて、私が書いた新しいテキストそれ以前。現在のアクティビティを閉じてそれに戻るまで、テキストは更新されません

* EditNote.java:

package com.twitter.i_droidi.notah; 

import android.content.Intent; 
import android.os.Bundle; 
import android.support.design.widget.FloatingActionButton; 
import android.support.design.widget.Snackbar; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.view.View; 
import android.widget.EditText; 
import android.widget.Toast; 
import io.realm.Realm; 
import io.realm.RealmResults; 

public class EditNote extends AppCompatActivity { 

    private int id; 
    private EditText editTitle; 
    private EditText editBody; 
    private Realm realm; 
    private Notes note; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.edit_note); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     Intent intent = getIntent(); 
     id = intent.getIntExtra("id", 0); 

     editTitle = (EditText) findViewById(R.id.edit_title); 
     editBody = (EditText) findViewById(R.id.edit_body); 

     // GET THE SPECIFIED NOTE FORM THE DATABASE. 
     this.realm = RealmController.with(this).getRealm(); 
     RealmResults<Notes> theNote = realm.where(Notes.class).findAll(); 
     note = theNote.get(id); 
     editTitle.setText(note.getTitle()); 
     editBody.setText(note.getBody()); 

     FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
     fab.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 

       if(editTitle.getText() == null || editTitle.getText().toString().equals("") || editTitle.getText().toString().equals(" ")) 
        Snackbar.make(findViewById(R.id.coordinatorlayout_edit_note), R.string.write_a_valid_note, Snackbar.LENGTH_SHORT).show(); 
       else 
       { 
        RealmResults<Notes> results = realm.where(Notes.class).findAll(); 

        realm.beginTransaction(); 
        results.get(id).setTitle(editTitle.getText().toString()); 
        results.get(id).setBody(editBody.getText().toString()); 
        realm.commitTransaction(); 

        Toast.makeText(EditNote.this, R.string.changes_saved, Toast.LENGTH_SHORT).show(); 

        finish(); 
       } 

      } 
     }); 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
    } 
} 

* ViewNote.java:

package com.twitter.i_droidi.notah; 

import android.content.Intent; 
import android.os.Bundle; 
import android.support.design.widget.FloatingActionButton; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.view.View; 
import android.widget.TextView; 
import io.realm.Realm; 
import io.realm.RealmResults; 

public class ViewNote extends AppCompatActivity { 

    private int id; 
    private TextView viewTitle; 
    private TextView viewBody; 
    private Notes note; 
    private Realm realm; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.view_note); 
     Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 

     Intent intent = getIntent(); 
     id = intent.getIntExtra("id", 0); 

     viewTitle = (TextView) findViewById(R.id.view_title); 
     viewBody = (TextView) findViewById(R.id.view_body); 

     // GET THE SPECIFIED NOTE FROM THE DATABASE. 
     this.realm = RealmController.with(this).getRealm(); 
     RealmResults<Notes> theNote = realm.where(Notes.class).findAll(); 
     note = theNote.get(id); 
     viewTitle.setText(note.getTitle()); 
     viewBody.setText(note.getBody()); 

     FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
     fab.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 

       Intent intent = new Intent(ViewNote.this, EditNote.class); 
       intent.putExtra("id", id); 
       startActivity(intent); 
      } 
     }); 
     getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
    } 
} 
+0

どちらかを使用する[startActivityForResult()](http://stackoverflow.com/questions/18243515/android-going-back-t o-previous-activity-with-different-intent-value/18243541#18243541)、またはあなたの質問を 'onResume()'で実行してください。今のところ、あなたは 'ViewNote.java'にノートが変更されたと言っているわけではないので、' onCreate() 'で取得した内容を表示します。 'onResume()'は、最初に作成されたときや、元に戻ったときに実行されます。または、あなたが 'onActivityResult()'にアップデートがあると言う最初の方法 – codeMagic

+0

@Androiderはい私はcodeMagicと同じwrttingでした – Nisarg

+0

@codeMagic私はあなたが投稿したリンクを見て、これも(http://stackoverflow.com/questions/10407159/how-to-manage-start-on-android)を参照してください。私はこの問題に関するいくつかのコードを書いたが、私はまだ同じ問題を抱えている。あなたは私の状況で私を助けるいくつかのコードを書いてください!ありがとう。 – Androider

答えて

0

私はついにそれを得たと思います!

次のコードにEditNote.javaViewNote.javaでジャスト変更(一部の)コード:

* EditNote.java:

... 
... 
... 

Intent intent1 = new Intent(EditNote.this, ViewNote.class); 
        intent1.putExtra("id", id); 
        intent1.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
        startActivity(intent1); 
        //finish(); 
       } 

... 
... 
... 

* ViewNote.java:

... 
... 
... 

FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
     fab.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 

       Intent intent = new Intent(ViewNote.this, EditNote.class); 
       intent.putExtra("id", id); 
       intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
       //startActivityForResult(intent, 0); 
       startActivity(intent); 
      } 
     }); 

... 
... 
... 

@Override 
    public void onBackPressed() { 

     Intent intent = new Intent(getApplicationContext(), MainActivity.class); 
     intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     startActivity(intent); 

     super.onBackPressed(); 
    } 
関連する問題