2017-08-28 106 views
-10

我的接口初始化接口

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

}

我有错误

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

研究以及有关的接口。 –

+0

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

+3

使用接口进行活动间通信是一种错误的方法。 – Selvin

回答

3

MainActivity必须实现Baseface为投给sucess。

public class MainActivity extends AppCompatActivity implements Baseface 
    ... 
0

试试这个让你MainActivity工具Baseface所以MainActivity是可以转换为Baseface

这样

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

} 

,如果你想从以上的活动等传递数据您可以通过以下代码intent代码

发送数据使用putExtra()法这样从您的主要活动

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

intent现在你SecondActivity收到这样

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