android 类 引用类,java里面2个类有相同的方法,其他类引用怎么办

java里面2个类有相同的方法,其他类引用怎么处理?

本帖最后由 myismymxd 于 2015-04-01 17:33:50 编辑

情况是这样的:

我有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启动,顺便把参数带过去?

------解决思路----------------------

引用:不得行哦

loadUrl 是 webview 的方法,不是 activity 的方法。。。

024715122.gif

你耦合太高了吧

webview的方法给activity调是什么意思

------解决思路----------------------

引用:不得行哦

loadUrl 是 webview 的方法,不是 activity 的方法。。。

024715122.gif

我的想法是:

一个接口:

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啥的都传过去

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值