2016-03-28 11 views
2

私はメモアプリを作ろうとしています。基本的には、リストビューでアイテムをクリックすると、アイテムの名前が編集可能なときに別のアクティビティに移動します。テキストを編集してアクションバーの戻るボタンをクリックすると、テキストがメインアクティビティで更新されますが、これは起こりません。しかし、私はアンドロイドの戻るボタン(デバイスの1つ)を使用すると正常に動作します。ここアクションバーのバックボタンが必要に応じて機能しない

は私のコード

public class MainActivity extends AppCompatActivity { 

ListView MemoContent ; 
static ArrayList<String> MyArray ; 
static ArrayAdapter MyAdapter ; 

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

    MemoContent = (ListView) findViewById(R.id.MemoContent) ; 
    MyArray = new ArrayList<>() ; 
    MyArray.add("Example Note") ; 

    MyAdapter = new ArrayAdapter(this , android.R.layout.simple_list_item_1 , MyArray); 
    MemoContent.setAdapter(MyAdapter); 

    MemoContent.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      Intent i = new Intent(getApplicationContext() , EditMemo.class) ; 
      i.putExtra("note" , position) ; 
      startActivity(i); 


     } 
    }); 

} 

であり、ここで第二の活動である

public class EditMemo extends AppCompatActivity implements TextWatcher { 

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

    getSupportActionBar().setDisplayHomeAsUpEnabled(true); 
    editText = (EditText) findViewById(R.id.editText) ; 

    Intent j = getIntent() ; 
    id = j.getIntExtra("note" , -1) ; 
    if(id!=-1) 
    { 
     editText.setText(MainActivity.MyArray.get(id)); 
    } 

    editText.addTextChangedListener(this); 
} 


@Override 
public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

} 

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

    MainActivity.MyArray.set(id , String.valueOf(s)) ; 
    MainActivity.MyAdapter.notifyDataSetChanged(); 

} 

@Override 
public void afterTextChanged(Editable s) { 

} 

}

事前に感謝..

+0

を必要とされているあなたが処理する必要があります2番目のアクティビティで 'onOptionsItemSelected(MenuItem item)'をオーバーライドしてActionBarの戻るボタンをクリックします。 –

+0

私が2番目のアクティビティを作成したとき、私は階層オプションを使用して、戻るボタンを最初のアクティビティに設定しました。 –

答えて

1

メタを追加してくださいデータタグとandroid:parマニフェストにあなたの子供の活動の宣言にentActivityName属性を次のように

<activity 
     android:name=".EditMemo" 
     android:parentActivityName=".MainActivity"> 
      <meta-data 
       android:name="android.support.PARENT_ACTIVITY" 
       android:value="full.package.name.to.MainActivity" /> 
    </activity> 

を使用すると、APIレベル16をターゲットとし、最大されている場合は、単にアンドロイド:parentActivityName属性は

+0

ありがとうございますが、戻るボタンはすでに動作しています。しかし、私は主な活動に戻るとき、私はメモのテキストを変更すると、リストの要素は変更されませんでしたが、私はアンドロイドボタンを返した場合、実際に変更されます。 –

+0

notifyDataSetChanged呼び出しをMainActivityのonResumeコールバックに移動しようとしましたか? –

関連する問題