java里面2个类有相同的方法,其他类引用怎么办
java里面2个类有相同的方法,其他类引用怎么处理?
情况是这样的:
我有2个activity:
ActivityA 、ActivityB 他们都有一个相同的方法 getWebView
然后都需要调用 ReadHttp 处理一些业务,然后根据不同的情况加载网页。
然后在ReadHttp 里面每次都要判断相应的activity?
我感觉我这串代码写累赘了,
如果我有10个活动都需要调用这个 ReadHttp的方法,我每次都要判断context,很麻烦呀
java里面的什么多态、泛型、不是很懂
是不是这个可以解决这个办法?
------解决思路----------------------
不用判断吧?
mContext就是一个父类引用指向子类对象的例子
mConte直接mContext.loadUrl就有对应的方法,
不过最好还是写个接口让activity实现
------解决思路----------------------
你不会用Intent启动,顺便把参数带过去?
------解决思路----------------------
你耦合太高了吧
webview的方法给activity调是什么意思
------解决思路----------------------
我的想法是:
一个接口:
一个抽象类,不过感觉可以和接口融合……
然后其他需要业务的activity实现抽象类:
最后是业务类:
可能写的不好。
------解决思路----------------------
通过intent把需要的数据传递过去呗,把url啥的都传过去
情况是这样的:
我有2个activity:
ActivityA 、ActivityB 他们都有一个相同的方法 getWebView
然后都需要调用 ReadHttp 处理一些业务,然后根据不同的情况加载网页。
然后在ReadHttp 里面每次都要判断相应的activity?
public class ActivityA extends Activity {
public WebView mWebView;
@Override
public void onCreate(Bundle savedInstanceState) {
//...
mWebView = (WebView) findViewById(R.id.aweb);
ReadHttp http = new ReadHttp(this);
http.parseInfo();
}
public WebView getWebView(){
return mWebView;
}
}
public class ActivityB extends Activity {
public WebView mWebView;
@Override
public void onCreate(Bundle savedInstanceState) {
//...
mWebView = (WebView) findViewById(R.id.bweb);
ReadHttp http = new ReadHttp(this);
http.parseInfo();
}
public WebView getWebView(){
return mWebView;
}
}
//业务处理相关类
public class ReadHttp {
public Context mContext;
ReadHttp( Context c){
mContext = c;
}
public void parseInfo(){
//相关业务代码
//然后根据相关的情况让两个webview定义到相同的URL
String classname = mContext.getClass().toString();
if ( classname.indexOf('ActivityA') > -1){
ActivityA a = ( ActivityA ) mContext;
a.loadUrl( "xxx.com" ); //下面的b.loadUrl 和这里实现的东西都是一样的
} else if ( classname.indexOf('ActivityB ') > -1 ){
ActivityB b = ( ActivityB ) mContext;
b.loadUrl( "xxx.com" );
}
}
}
我感觉我这串代码写累赘了,
if ( classname.indexOf('ActivityA') > -1){
ActivityA a = ( ActivityA ) mContext;
a.loadUrl( "xxx.com" );
} else if ( classname.indexOf('ActivityB ') > -1 ){
ActivityB b = ( ActivityB ) mContext;
b.loadUrl( "xxx.com" );
}
如果我有10个活动都需要调用这个 ReadHttp的方法,我每次都要判断context,很麻烦呀
java里面的什么多态、泛型、不是很懂
是不是这个可以解决这个办法?
------解决思路----------------------
不用判断吧?
mContext就是一个父类引用指向子类对象的例子
mConte直接mContext.loadUrl就有对应的方法,
不过最好还是写个接口让activity实现
------解决思路----------------------
你不会用Intent启动,顺便把参数带过去?
------解决思路----------------------
你耦合太高了吧
webview的方法给activity调是什么意思
------解决思路----------------------
我的想法是:
一个接口:
public interface IReadHttp {
void myLoadUrl(String str);//依据业务需求定义
//TODO: 增加其他的
}
一个抽象类,不过感觉可以和接口融合……
public abstract class NewContext extends Activity implements IReadHttp{
}
然后其他需要业务的activity实现抽象类:
public class ActivityA extends NewContext{
@Override
public void myLoadUrl(String str) {
// TODO:XXXX
}
public WebView mWebView;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
mWebView = (WebView) findViewById(R.id.circle);
MyReadHttp http = new MyReadHttp(this);
http.parseInfo();
}
}
最后是业务类:
public class MyReadHttp {
public NewContext mContext;
public MyReadHttp(NewContext c){
mContext = c;
}
public void parseInfo(){
//相关业务代码
//然后根据相关的情况让两个webview定义到相同的URL
mContext.myLoadUrl( "xxx.com" ); //下面的b.loadUrl 和这里实现的东西都是一样的
}
}
可能写的不好。
------解决思路----------------------
通过intent把需要的数据传递过去呗,把url啥的都传过去