2014-09-28 56 views
2

嗨我想在活动之间传递一个对象,但看起来像意图没有找到活动。Android意图通过活动之间的对象

还有的obect类:

public class Contacte implements Serializable { 

private String nom; 
private String cognoms; 
private String telefon; 
private int horari; // 0 = horari sense definir; 1 = 24h; 2 = Mati; 3 = Tarda 

/** 
* Constructor sense parametres que permet crear un objecte contacte amb els 
* valors predefinits 
*/ 
public Contacte(){ 
    nom = "Nom"; 
    cognoms = "Cognom"; 
    telefon = "Telefon"; 
    horari = 0; 
} 

/** Gettes and Setters **/ 

在MainActivity:

// I use this cause I need to order the objects by priority 
ArrayList<Contacte> contactes = new ArrayList<Contacte>(); 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 


    // Create Contactes and add to the ArrayList 
    Contacte c1 = new Contacte(); 
    Contacte c2 = new Contacte(); 
    Contacte c3 = new Contacte(); 

    c1.setNom("John"); 
    c1.setCognoms("Doe"); 
    c1.setTelefon("632145897"); 

    contactes.add(c1); 
    contactes.add(c2); 
    contactes.add(c3); 


// This is because I have 6 different buttons 
    Button edita1 = (Button)findViewById(R.id.edita1); 
    edita1.setOnClickListener(onClickListener); 


} 


private OnClickListener onClickListener = new OnClickListener() { 
    @Override 
    public void onClick(final View v) { 
     switch(v.getId()){ 
      case R.id.edita1: 

       // 1. create an intent pass class name or intnet action name 
       Intent i = new Intent("com.ioc.eac1.EditaContacte"); 

       // 2. create person object 
       Contacte c = new Contacte(); 
       c = contactes.get(0); 

       // 3. put person in intent data 
       i.putExtra("contacte", c); 

       // 4. start the activity 
       startActivity(i); 
      break; 
      case R.id.edita2: 
       //DO something 
      break; 
      case R.id.edita3: 
       //DO something 
      break; 
     } 

    } 

};

的EditaContacte:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_edita_contacte); 

    // 1. get passed intent 
    Intent intent = getIntent(); 

    // 2. get person object from intent 
    Contacte c = (Contacte) intent.getSerializableExtra("contacte"); 

    // 3. get reference to person textView 
    EditText editaNom = (EditText) findViewById(R.id.editaNom); 

    // 4. display name & age on textView 
    editaNom.setText(c.getNom()); 

} 

而且还有的的Manifest.xml

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name=".MainActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name=".EditaContacte" 
     android:label="@string/title_activity_edita_contacte" > 
    </activity> 


</application> 

我试图调试它,看上去就像个意图没有找到活动。但它在活动清单上声明的活动。我试图发送和在一个活动中创建对象时,单击按钮并显示其他活动的对象属性

回答

0

只需使用Intent.SetClass(MainActivity.this,EditaContacte.class)。

如果两个活动在同一个应用程序中,则不需要使用动作,只需设置类。

+0

是的,你说得对,非常感谢! – proktovief 2014-09-28 07:42:58