2016-03-28 23 views
2

Bir not uygulaması yapmaya çalışıyorum. Temel olarak, liste görünümündeki bir öğeyi tıklattığımda, öğenin adı düzenlenebilir olduğunda bu başka bir etkinliğe götürür. Metni düzenlediğimde ve eylem çubuğundaki geri düğmesini tıklattığımda, metin ana etkinlikte güncellenmelidir, ancak bu gerçekleşmez; ama android geri düğmesini kullandığımda (cihazdan biri) iyi çalışıyor. Burada Actionbar geri düğmesi gerektiği gibi çalışmıyor

kodum

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); 


     } 
    }); 

} 

ve burada ikinci bir etkinlik

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) { 

} 

} önceden

Teşekkür ..

+0

gereklidir Sen işlemek zorunda ActionBar geri düğmesi, ikinci etkinliğinizde 'onOptionsItemSelected (MenuItem öğesi)' yi geçersiz kılarak. –

+0

İkinci etkinliği oluşturduğumda, arkadaki düğmeyi ilk etkinliğe ayarlamak için hiyerarşi seçeneğini kullandım. –

cevap

1

meta eklemek için emin olun olduğunu data etiketi ve android: par entActivityName Manifestte çocuğunuzun etkinlik bildirisine nitelik şöyle:

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

yukarı API düzeyi 16 ve hedefliyorsanız android sadece: parentActivityName nitelik

+0

Teşekkür ederim, ama geri düğmesi zaten çalışıyor; Ancak ana etkinliğe döndüğümde, nottaki metni değiştirdiğimde listedeki öğenin değişmediğini buldum, ancak android düğmesiyle döndüğümde aslında değişiyor. –

+0

NotifyDataSetChanged çağrısını MainActivity'ın onResume geri çağrısına taşımaya çalıştınız mı? –

İlgili konular