首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自另一个类的android调用函数

来自另一个类的android调用函数
EN

Stack Overflow用户
提问于 2012-07-06 15:34:59
回答 2查看 573关注 0票数 0

我有主要的"tabHost“布局,它的框架内容是设置在另一个布局”内容“,其中包含一个网页视图。"Tabbar“类设置tabhost布局,"second”类设置框架内容。

问题是,在"Tabbar“类中,当我尝试使用以下代码设置webview高度时,该代码在参数上崩溃,

代码语言:javascript
复制
WebView webviewA = (WebView) findViewById(R.id.webviewA);     
LayoutParams params = (LayoutParams) webviewA.getLayoutParams();
params.height -= 300;

已尝试从选项卡栏中调用webviewA的函数,

Tabbar类

代码语言:javascript
复制
second recalcula = new second();
recalcula.recalcula();

第二类

代码语言:javascript
复制
public void recalcula (){
    webviewA = (WebView) findViewById(R.id.webviewA);
    LayoutParams params = (LayoutParams) webviewA.getLayoutParams();
    params.height -= 300;
    webviewA.setLayoutParams(params);
}

也会在参数上崩溃...我做错了什么?谢谢。

logcat错误

代码语言:javascript
复制
   07-06 10:14:39.893: E/AndroidRuntime(11023): FATAL EXCEPTION: main
    07-06 10:14:39.893: E/AndroidRuntime(11023): java.lang.NullPointerException
    07-06 10:14:39.893: E/AndroidRuntime(11023):    at com.xxxxx.projecte1.second.recalcula(second.java:70)
    07-06 10:14:39.893: E/AndroidRuntime(11023):    at com.xxxxx.projecte1.TabBar.onReceiveAd(TabBar_iOSActivity.java:493)
    07-06 10:14:39.893: E/AndroidRuntime(11023):    at com.google.ads.internal.d.B(SourceFile:1116)
    07-06 10:14:39.893: E/AndroidRuntime(11023):    at com.google.ads.internal.c$e.run(SourceFile:187)
    07-06 10:14:39.893: E/AndroidRuntime(11023):    at android.os.Handler.handleCallback(Handler.java:587)
    07-06 10:14:39.893: E/AndroidRuntime(11023):    at android.os.Handler.dispatchMessage(Handler.java:92)
    07-06 10:14:39.893: E/AndroidRuntime(11023):    at android.os.Looper.loop(Looper.java:138)
    07-06 10:14:39.893: E/AndroidRuntime(11023):    at android.app.ActivityThread.main(ActivityThread.java:3701)
    07-06 10:14:39.893: E/AndroidRuntime(11023):    at java.lang.reflect.Method.invokeNative(Native Method)
    07-06 10:14:39.893: E/AndroidRuntime(11023):    at java.lang.reflect.Method.invoke(Method.java:507)
    07-06 10:14:39.893: E/AndroidRuntime(11023):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:878)
    07-06 10:14:39.893: E/AndroidRuntime(11023):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:636)
    07-06 10:14:39.893: E/AndroidRuntime(11023):    at dalvik.system.NativeStart.main(Native Method)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-06 16:31:21

您可以使用反射。

这里有一个例子;http://aaarkonusurum.blogspot.com/2012/02/android-ile-reflection.html

票数 0
EN

Stack Overflow用户

发布于 2012-07-06 15:54:02

如果LayoutParams是从另一个类而不是从activity调用的,那么可能是导入部分中的值不正确。在设置或获得布局参数时,何时优选使用LinearLayout.LayoutParams,或者LayoutParams类型是什么。

在视图中,当您尝试

代码语言:javascript
复制
setLayoutParams(new LinearLayout.LayoutParams(FILL_PARENT, FILL_PARENT));

而实际的父布局参数是相对的,那么这就是一个问题。获取它们时也是如此。我不知道为什么,但在非活动类中,布局参数并不总是导入正确的参数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11357809

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档