2017-08-28 2 views
-10

Meine Schnittstelleinitialisieren Schnittstelle in Aktivität

public interface Baseface { 

    public void updatedName(String newName); 
} 

MainActivity

public class MainActivity extends AppCompatActivity { 

private Baseface baseface; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    baseface = (Baseface) this; 
    baseface.updatedName("hello"); 

    Intent i = new Intent(MainActivity.this, SecondActivity.class); 
    startActivity(i); 
    } 

}

SecondActivity

public class SecondActivity extends AppCompatActivity implements Baseface { 

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

} 

@Override 
public void updatedName(String newName) { 
    Log.e("my new name is:",newName); 
} 

}

Ich habe Fehler

Caused by: java.lang.ClassCastException. MainActivity cannot be cast to Baseface 
+0

Studie gut über die Schnittstelle empfangen werden. –

+0

https://ericlippert.com/2014/03/05/how-to-debug-small-programs/ – larsgrefer

+3

Verwendung von Schnittstellen zur Kommunikation zwischen Aktivitäten ist ein falscher Ansatz. – Selvin

Antwort

3

MainActivity muss Baseface für die Besetzung zu Erfolg umzusetzen.

public class MainActivity extends AppCompatActivity implements Baseface 
    ... 
0

versuchen dies Ihr MainActivity Geräte machen Baseface so die MainActivity ist, kann wie diese

public class MainActivity extends AppCompatActivity implements Baseface { 
    private Baseface baseface; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    baseface = (Baseface) this; 
    baseface.updatedName("hello"); 

    Intent i = new Intent(MainActivity.this, SecondActivity.class); 
    startActivity(i); 
    } 

} 

zu Baseface

gegossen werden, und wenn Sie möchten, andere von einer Aktivität Daten zu übergeben als Sie können die Daten intent unter dem Code

übergeben

senden Daten mit intentputExtra() Verfahren wie diese von Ihrer Hauptaktivität

Intent i = new Intent(MainActivity.this, SecondActivity.class); 
i.putExtra("data", "hello"); 
startActivity(i); 

in ihrem SecondActivity wie diese

Intent intent = getIntent(); 
String data = intent.getStringExtra("data"); 
Verwandte Themen