0

我有一个类(constant.class)。其中包含所有需要更新的常量值。我在主要活动中有一个方法。它更新常量值(一个 url)并执行一个视图类(包含 webview)。但是 url 的值不能在 constant.class 中更新。所以在视图中,webview 看起来是白色的。我必须更新 constant.class 中 url 的值。这是我的常量类:

public class Constant {

public static boolean isCapturedOk = false;

public static int imagePickerStatus = -1;

public static byte[] imageData;

public static int result = 0;

public static String printUrl = "";

public static String rotationValue="";

public static String rotationValueForCamera="";

public static boolean isPrintButtonVisible = true;

}

这是我的视图类:

public class PrintView extends LinearLayout {

WebView wev;
public PrintView(Context context) {
    super(context);
    // TODO Auto-generated constructor stub
    View.inflate(context, R.layout.printscreen, this);
    wev = (WebView) findViewById(R.id.webViewPrint);
    wev.loadUrl("http://www.vividworks.com/");

}

public PrintView(Context context, AttributeSet attrs, int defStyle) {
    super(context);
    // TODO Auto-generated constructor stub
    View.inflate(context, R.layout.printscreen, this);
    wev = (WebView) findViewById(R.id.webViewPrint);
    wev.loadUrl("http://www.vividworks.com/");

}

public PrintView(Context context, AttributeSet attrs) {
    super(context);
    // TODO Auto-generated constructor stub
    View.inflate(context, R.layout.printscreen, this);
    wev = (WebView) findViewById(R.id.webViewPrint);
    wev.loadUrl("http://www.vividworks.com/");

}



@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
    // TODO Auto-generated method stub
    for(int i = 0 ; i < getChildCount() ; i++){
        getChildAt(i).layout(l, t, r, b);
    }
}

}

这是主要活动中的方法:

  public void loadPrintActivity(String printUrl){
   Constant.printUrl = printUrl;
   Constant.isPrintButtonVisible  =true;
   pv.setVisibility(View.VISIBLE);}
4

1 回答 1

0

为什么不把你的Constant课变成一个Java singleton class

这样,您可以获得类之一,使用和instance编辑其字段。getterssetters

这大概是这个类的样子:

private Constant() {
    // Exists only to defeat instantiation.
}

public static Constant getInstance() {
    if(instance == null) {
        instance = new Constant();
    }
    return instance;
}

add getters and setters

在每项活动中,您都可以获得Constant如下信息:

Constant c = Constant.getInstance();

然后正常设置 URL 或其他内容

e.g. c.setURL("urlhere");
于 2013-10-08T03:55:01.507 回答