2014-12-29 2 views
0

У меня проблема.Почему мое приложение вызывает событие OnCreate каждый раз, когда я вызываю действие?

Я пытаюсь добавить значение в ListView, поскольку другой деятельности, поэтому у меня есть 2 мероприятия

  • число 1 есть кнопка (для вызова деятельности 2) и имеют ListView

  • другая деятельность зайца на 2 EditText и кнопку вызов, где к деятельности 1 (здесь проходит 2 значения INA putextras)

SO, когда я называю деятельность 2 и я обратно событием OnC reate называется againg, кто-то знает почему?

мой код вида деятельности 1

import android.content.Intent; 
import android.support.v7.app.ActionBarActivity; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.ListView; 
import android.widget.Toast; 

import java.util.ArrayList; 



public class MainActivity extends ActionBarActivity { 

    private ArrayList<User> arrayOfUsers; 
    private UsersAdapter adapter; 
    private ListView listView; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     listView = (ListView) findViewById(R.id.lvItems); 
     arrayOfUsers = new ArrayList<User>(); 
     adapter = new UsersAdapter(this, arrayOfUsers); 
     listView.setAdapter(adapter); 
     Toast.makeText(this, "onCreate", Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    protected void onResume() { 
     super.onResume(); 
     Bundle extras = getIntent().getExtras(); 
     if(extras != null) 
     { 
      if(extras.getString("ename") != null && extras.getString("ehome") != null) { 

       User newUser = new User(extras.getString("ename"), extras.getString("ehome")); 
       adapter.add(newUser); 
      } 
     } 
     listView.setAdapter(adapter); 
     Toast.makeText(this, "onResume", Toast.LENGTH_SHORT).show(); 
    } 
    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu_main, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 

     //noinspection SimplifiableIfStatement 
     if (id == R.id.action_settings) { 
      return true; 
     } 

     return super.onOptionsItemSelected(item); 
    } 

    public void clicbtn(View v){ 
     Intent i = new Intent(MainActivity.this,MainActivity2.class); 
     startActivity(i); 
    } 

} 

мой код деятельности 2

public class MainActivity2 extends ActionBarActivity { 

private EditText ename; 
private EditText ehome; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main_activity2); 
    ename = (EditText) findViewById(R.id.editText); 
    ehome = (EditText) findViewById(R.id.editText2); 

} 


@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.menu_main_activity2, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 

    //noinspection SimplifiableIfStatement 
    if (id == R.id.action_settings) { 
     return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 

public void accion(View v){ 

    Intent i = new Intent(MainActivity2.this, MainActivity.class); 
    //i.putExtra("ename",ename.getText().toString()); 
    //i.putExtra("ehome",ehome.getText().toString()); 
    startActivity(i); 
} 

}

ответ

1

onCreate() становится называется потому, что вы снова запустить его как новый вид деятельности от этой линии

Intent i = new Intent(MainActivity2.this, MainActivity.class); 
//i.putExtra("ename",ename.getText().toString()); 
//i.putExtra("ehome",ehome.getText().toString()); 
startActivity(i); 

Если вы хотите отправить значения предыдущего использования активности startActivityForResult

Этот SO вопрос может помочь реализации этой How to manage `startActivityForResult` on Android?

+0

спасибо! я делаю это! –

Смежные вопросы