情况是这样的: 我有2个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里面的什么多态、泛型、不是很懂 |
|
5分 |
不用判断吧?
mContext就是一个父类引用指向子类对象的例子 mConte直接mContext.loadUrl就有对应的方法, 不过最好还是写个接口让activity实现 |
不得行哦
loadUrl 是 webview 的方法,不是 activity 的方法。。。 |
|
5分 |
你不会用Intent启动,顺便把参数带过去?
|
5分 |
你耦合太高了吧 webview的方法给activity调是什么意思 |
80分 |
我的想法是: 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 和这里实现的东西都是一样的 } } 可能写的不好。 |
感谢楼上几位提供的思路
@inquisitive_plus 我可以试试 原本我是写PHP的,由于java是强类型语言,可能我整个的思路还是用PHP的思路来写JAVA了 |
|
5分 |
通过intent把需要的数据传递过去呗,把url啥的都传过去
|