0

フレームコンテンツがWebビューを含む別のレイアウト「コンテンツ」に設定されているメインの「tabHost」レイアウトがあります。「Tabbar」クラスはタブホストのレイアウトを設定し、「second」クラスはそのフレームコンテンツを設定します。

問題は、「Tabbar」クラスから、パラメータでクラッシュする次のコードを使用してWebビューの高さを設定しようとした場合です。

WebView webviewA = (WebView) findViewById(R.id.webviewA);     
LayoutParams params = (LayoutParams) webviewA.getLayoutParams();
params.height -= 300;

すでにTabbarからwebviewAの関数を次のように呼び出そうとしました。

タブバークラス

second recalcula = new second();
recalcula.recalcula();

セカンドクラス

public void recalcula (){
    webviewA = (WebView) findViewById(R.id.webviewA);
    LayoutParams params = (LayoutParams) webviewA.getLayoutParams();
    params.height -= 300;
    webviewA.setLayoutParams(params);
}

また、パラメータでクラッシュします...私が間違っていることは何ですか?ありがとうございました。

logcatエラー

   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)
4

2 に答える 2

0

LayoutParamsがアクティビティではなく別のクラスから呼び出された場合、インポートセクションのセクションが正しくない可能性があります。その場合、レイアウトパラメータを設定または取得するときに、LinearLayout.LayoutParamsを使用するか、LayoutParamsのタイプを使用することをお勧めします。

あなたがしようとしているときのビューで

setLayoutParams(new LinearLayout.LayoutParams(FILL_PARENT, FILL_PARENT));

実際の親レイアウトパラメータは相対的なものであるため、問題が発生します。それらを取得するときも同じです。理由はわかりませんが、非アクティビティクラスでは、レイアウトパラメータが常に正しいものをインポートするわけではありません。

于 2012-07-06T07:54:02.037 に答える
0

リフレクションを使用できます。

ここに例があります。 http://aaarkonusurum.blogspot.com/2012/02/android-ile-reflection.html

于 2012-07-06T08:31:20.837 に答える