2012-04-16 9 views
1

--UPDATE-- 4月17、2012RelativeLayoutアプリ

をクラッシュlayout_above私が追加したときに、それが唯一のクラッシュているようです。 lakeSearchAdWebviewが常に表示されているので、私は彼らがlakeSearchAdWebviewの上に常にあるようにlakeSearchScrollViewとlakeSearchDetailsWebViewセットアップを持ちたい

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" > 

<ScrollView 
    android:id="@+id/lakeSearchScrollView" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:visibility="visible" > 

    <RelativeLayout 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" > 

     <ImageView 
      android:id="@+id/imageView1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_x="0dp" 
      android:layout_y="0dp" 
      android:src="@drawable/contentbg" /> 

     <EditText 
      android:id="@+id/searchBar" 
      android:layout_width="274dp" 
      android:layout_height="wrap_content" 
      android:layout_alignParentTop="true" 
      android:layout_centerHorizontal="true" 
      android:layout_marginTop="83dp" > 

      <requestFocus /> 
     </EditText> 

     <Button 
      android:id="@+id/lakeSearchSearchBTN" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignRight="@+id/searchBar" 
      android:layout_below="@+id/searchBar" 
      android:layout_marginTop="15dp" 
      android:text="Search" /> 

     <TableLayout 
      android:id="@+id/resultsTableLayout" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_below="@+id/lakeSearchSearchBTN" > 
     </TableLayout> 
    </RelativeLayout> 
</ScrollView> 

<WebView 
    android:id="@+id/lakeSearchDetailsWebView" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:visibility="invisible" /> 

<WebView 
    android:id="@+id/lakeSearchAdWebView" 
    android:layout_width="match_parent" 
    android:layout_height="50dp" 
    android:layout_alignParentBottom="true" /> 

</RelativeLayout> 

は、ここに私のレイアウトです。一度に表示されるのは、lakeSearchScrollViewとlakeSearchDetailsWebViewのうち1つだけです。ホエーは互いの上に座っているように設定されています。

私はlakeSearchScrollViewに次の行を追加すると

、アプリケーションがクラッシュ:

android:layout_above="@+id/lakeSearchAdWebView" 

誰もが私が間違ってやっているものを私に伝えることができますか?私はまだAndroidにはまだ新しいので、おそらく初心者の間違いだと思っています...事前に感謝!

--UPDATE--ソースコード:

package com.theappdoor.ifish; 

import java.util.ArrayList; 
import java.util.Iterator; 
import java.util.List; 

import android.app.Activity; 
import android.app.AlertDialog; 
import android.app.TabActivity; 
import android.content.Context; 
import android.content.DialogInterface; 
import android.content.Intent; 
import android.content.SharedPreferences; 
import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.view.inputmethod.InputMethodManager; 
import android.webkit.WebSettings; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.ScrollView; 
import android.widget.TabHost; 
import android.widget.TableLayout; 
import android.widget.TableRow; 
import android.widget.TextView; 

import android.util.Log; 

public class iFishLakeSearch extends Activity { 

    private EditText searchBar; 
    private TableLayout resultsTableLayout; 
    private DataHelper dh; 
    private iFishLakeDetails iFishLD; 

    private Button lakeSearchBTN; 
    private ScrollView searchScrollView; 
    private WebView detailsWebView; 
    private String lake_id; 

    private WebView lakeSearchAdWebView; 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     //setContentView(R.layout.lakesearch); 
     //This sets the context to the be of the parent, which is what we want 
     View viewToLoad = LayoutInflater.from(this.getParent()).inflate(R.layout.lakesearch, null); 
     setContentView(viewToLoad); 

     //setup vars 

     this.dh = new DataHelper(this); 
     this.iFishLD = new iFishLakeDetails(this); 

     // connect our elements from the UI XML 

     this.searchBar = (EditText) findViewById(R.id.searchBar); //LINE 61 

     this.resultsTableLayout = (TableLayout) findViewById(R.id.resultsTableLayout); 

     this.lakeSearchBTN = (Button) findViewById(R.id.lakeSearchSearchBTN); 
     this.lakeSearchBTN.setOnClickListener(new OnClickListener(){ 
      public void onClick(View v) { 
       lakeSearch(v); 
      } 
     }); 


     this.searchScrollView = (ScrollView) findViewById(R.id.lakeSearchScrollView); 

     this.detailsWebView = (WebView) findViewById(R.id.lakeSearchDetailsWebView); 
     WebSettings webSettings = this.detailsWebView.getSettings(); 
     webSettings.setJavaScriptEnabled(true); 
     this.detailsWebView.setWebViewClient(new MyWebViewClient()); 
     this.detailsWebView.addJavascriptInterface(new JavaScriptInterface(this), "Android"); 

     this.detailsWebView.loadUrl("file:///android_asset/webassets/index.html"); 

     this.lakeSearchAdWebView = (WebView)findViewById(R.id.lakeSearchAdWebView); 
     webSettings = this.lakeSearchAdWebView.getSettings(); 
     webSettings.setJavaScriptEnabled(true); 

     this.lakeSearchAdWebView.loadUrl(this.getString(R.string.server)+"/iFish_ads/"); 

    } 

ライン61:

this.searchBar = (EditText) findViewById(R.id.searchBar); 

--UPDATE--

クラッシュログ:

04-16 13:22:23.951: D/AndroidRuntime(20896): Shutting down VM 
    04-16 13:22:23.951: W/dalvikvm(20896): threadid=1: thread exiting with uncaught exception (group=0x40015578) 
    04-16 13:22:23.970: E/AndroidRuntime(20896): FATAL EXCEPTION: main 
    04-16 13:22:23.970: E/AndroidRuntime(20896): java.lang.IllegalStateException: Could not execute method of the activity 
    04-16 13:22:23.970: E/AndroidRuntime(20896): at android.view.View$1.onClick(View.java:2154) 
    04-16 13:22:23.970: E/AndroidRuntime(20896): at android.view.View.performClick(View.java:2538) 
    04-16 13:22:23.970: E/AndroidRuntime(20896): at android.view.View$PerformClick.run(View.java:9152) 
    04-16 13:22:23.970: E/AndroidRuntime(20896): at android.os.Handler.handleCallback(Handler.java:587) 
    04-16 13:22:23.970: E/AndroidRuntime(20896): at android.os.Handler.dispatchMessage(Handler.java:92) 
    04-16 13:22:23.970: E/AndroidRuntime(20896): at android.os.Looper.loop(Looper.java:123) 
    04-16 13:22:23.970: E/AndroidRuntime(20896): at android.app.ActivityThread.main(ActivityThread.java:3687) 
    04-16 13:22:23.970: E/AndroidRuntime(20896): at java.lang.reflect.Method.invokeNative(Native Method) 
    04-16 13:22:23.970: E/AndroidRuntime(20896): at java.lang.reflect.Method.invoke(Method.java:507) 
    04-16 13:22:23.970: E/AndroidRuntime(20896): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842) 
    04-16 13:22:23.970: E/AndroidRuntime(20896): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600) 
    04-16 13:22:23.970: E/AndroidRuntime(20896): at dalvik.system.NativeStart.main(Native Method) 
    04-16 13:22:23.970: E/AndroidRuntime(20896): Caused by: java.lang.reflect.InvocationTargetException 
    04-16 13:22:23.970: E/AndroidRuntime(20896): at java.lang.reflect.Method.invokeNative(Native Method) 
    04-16 13:22:23.970: E/AndroidRuntime(20896): at java.lang.reflect.Method.invoke(Method.java:507) 
    04-16 13:22:23.970: E/AndroidRuntime(20896): at android.view.View$1.onClick(View.java:2149) 
    04-16 13:22:23.970: E/AndroidRuntime(20896): ... 11 more 
    04-16 13:22:23.970: E/AndroidRuntime(20896): Caused by: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.theappdoor.ifish/com.theappdoor.ifish.TabGroup2Activity}: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.theappdoor.ifish/com.theappdoor.ifish.iFishLakeSearch}: java.lang.ClassCastException: android.webkit.WebView 
    04-16 13:22:23.970: E/AndroidRuntime(20896): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651) 
    04-16 13:22:23.970: E/AndroidRuntime(20896): at android.app.ActivityThread.startActivityNow(ActivityThread.java:1491) 
    04-16 13:22:23.970: E/AndroidRuntime(20896): at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:127) 
    04-16 13:22:23.970: E/AndroidRuntime(20896): at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:339) 
    04-16 13:22:23.970: E/AndroidRuntime(20896): at android.widget.TabHost$IntentContentStrategy.getContentView(TabHost.java:657) 
    04-16 13:22:23.970: E/AndroidRuntime(20896): at android.widget.TabHost.setCurrentTab(TabHost.java:329) 
    04-16 13:22:23.970: E/AndroidRuntime(20896): at com.theappdoor.ifish.iFishHome.goToLakeSearch(iFishHome.java:20) 
    04-16 13:22:23.970: E/AndroidRuntime(20896): ... 14 more 
    04-16 13:22:23.970: E/AndroidRuntime(20896): Caused by: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.theappdoor.ifish/com.theappdoor.ifish.iFishLakeSearch}: java.lang.ClassCastException: android.webkit.WebView 
    04-16 13:22:23.970: E/AndroidRuntime(20896): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651) 
    04-16 13:22:23.970: E/AndroidRuntime(20896): at android.app.ActivityThread.startActivityNow(ActivityThread.java:1491) 
    04-16 13:22:23.970: E/AndroidRuntime(20896): at android.app.LocalActivityManager.moveToState(LocalActivityManager.java:127) 
    04-16 13:22:23.970: E/AndroidRuntime(20896): at android.app.LocalActivityManager.startActivity(LocalActivityManager.java:339) 
    04-16 13:22:23.970: E/AndroidRuntime(20896): at com.theappdoor.ifish.TabGroupActivity.startChildActivity(TabGroupActivity.java:116) 
    04-16 13:22:23.970: E/AndroidRuntime(20896): at com.theappdoor.ifish.TabGroup2Activity.onCreate(TabGroup2Activity.java:10) 
    04-16 13:22:23.970: E/AndroidRuntime(20896): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
    04-16 13:22:23.970: E/AndroidRuntime(20896): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615) 
    04-16 13:22:23.970: E/AndroidRuntime(20896): ... 20 more 
    04-16 13:22:23.970: E/AndroidRuntime(20896): Caused by: java.lang.ClassCastException: android.webkit.WebView 
    04-16 13:22:23.970: E/AndroidRuntime(20896): at com.theappdoor.ifish.iFishLakeSearch.onCreate(iFishLakeSearch.java:61) 
    04-16 13:22:23.970: E/AndroidRuntime(20896): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
    04-16 13:22:23.970: E/AndroidRuntime(20896): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615) 
    04-16 13:22:23.970: E/AndroidRuntime(20896): ... 27 more 
    04-16 13:22:44.244: I/Process(20896): Sending signal. PID: 20896 SIG: 9 
+0

ログは素晴らしいでしょう! – Raunak

+0

あなたのログ猫も投稿してください – Renard

+0

com.theappdoor.ifish.iFishLakeSearchの投稿行20。 –

答えて

0

アンドロイド: layout_above = "@ + id/lakeSearchAdWebView"はビューを意味しますlakeSearchAdWebViewのすぐ上に表示されます。あなたが2つの異なるビューに入れていると言ったので、両方ともlakeSearchAdWebViewの直上にあることはできないので、問題があります。

そこで修正するには、簡単に言えば: lakeSearchDetailsWebView

android:layout_above="@+id/lakeSearchAdWebView"、その後は、この方法は、(上から下へ)順lakeSearchScrollViewにあなたの意見を持つことになり、それをやってlakeSearchScrollView

android:layout_above:"@+id/lakeSearchDetailsWebView"を入れて、 lakeSearchDetailsWebView、lakeSearchAdWebView

+0

任意のビューは、それ自身を別のビューの上に揃えることができます。そのような属性を提供する複数のビューがある場合、それらは互いに見えなくなります。 –

+0

lakeSearchAdWebViewとlakeSearchScrollViewの両方がlakeSearchAdWebViewの上にあるようにします。なぜなら、2つのうち1つだけがいつでも表示され、lakeSearchAdWebViewは常に表示されるからです。 – Jag

+0

あなたの問題は何ですか?アプリがクラッシュする問題について質問しました –