如何从非活动java类中获取字符串!我使用接口将字符串从非活动java类发送到activity!
从这个类文件中我必须传递字符串Url。
public abstract class CustomTabsURLSpan extends URLSpan implements Parcelable{
String url;
public CustomTabsURLSpan(String url) {
super(url);
}
public void getLink(String url){
this.url = url;
}
private OnSendUrl onSendUrl;
public interface OnSendUrl{
void singleUrl(String url);
}
@Override
public void onClick(View widget) {
Log.d("link",getURL()+"");
url= getURL();
onSendUrl.singleUrl(url); // throws null pointer Exception
}
}
我需要在这里获取字符串 - >>>
public class MainActivity extends AppCompatActivity implements CustomTabsURLSpan.OnSendUrl{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public void singleUrl(String url) {
Log.d("url",url);
}
}
答案 0 :(得分:1)
代码中的初始问题是onSendUrl
未初始化。这使我们了解如何初始化它,这也可能引发另一个问题,即如何知道您分配给它的实例是否有效。
实现这一目标的一种简单方法是引入一个可以强制转换并分配给onSendUrl
的变量。在我的简单实现中,我使用Context作为OnSendUrl
接口的实现,并且您给出的用例也恰好是具有Context的Activity。我的简单实现如下所示:
public CustomTabsURLSpan(Context context, String url) {
super(url);
this.context = context;
if (context instanceof OnSendUrl) {
mListener = (OnSendUrl) context;
} else {
throw new RuntimeException(context.toString()
+ " must implement OnSendUrl");
}
}