2010-12-01 9 views
-1

Ich entwickle eine Anwendung, die Registerkarten verwendet, wobei jede Registerkarte mit einer Webseite verknüpft ist, die der Benutzer sehen und mit der Webansicht interagieren kann. was ich habe Probleme mit einem Befehl add Umsetzung, dass der Benutzer in der Lage sein wird, zu verwenden, um eine Registerkarte mit einer URL ihrer Wahl hinzuzufügen, die genau wie die anderenWie man Registerkarten dynamisch hinzufügt, die mit einer Benutzerauswahl der Webseite verbunden werden können

Unten arbeitet, ist mein Code

Hier ist die Haupt-Java-Datei, die alle anderen Dateien verwenden

public class UniversityofColorado extends TabActivity { 


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

    TabHost host=getTabHost(); 

    host.addTab(host.newTabSpec("one") 
      .setIndicator("Google") 
      .setContent(new Intent(this, Hello.class))); 

    host.addTab(host.newTabSpec("two") 
        .setIndicator("Colorado Main Site") 
        .setContent(new Intent(this, ColoradoMainSiteBrowser.class))); 

    host.addTab(host.newTabSpec("three") 
        .setIndicator("CULearn") 
        .setContent(new Intent(this, CULearnBrowser.class))); 

    host.addTab(host.newTabSpec("four") 
      .setIndicator("CULink") 
      .setContent(new Intent(this, CULinkBrowser.class))); 

    host.addTab(host.newTabSpec("five") 
      .setIndicator("MyCUInfo") 
      .setContent(new Intent(this, MyCUInfoBrowser.class))); 

    host.addTab(host.newTabSpec("six") 
      .setIndicator("Campus Map") 
      .setContent(new Intent(this, CampusBrowser.class))); 

    host.addTab(host.newTabSpec("Seven") 
      .setIndicator("Notes") 
      .setContent(new Intent(this, Notepadv3.class))); 
} 




    // Inflates menu when "menu Key" is pressed 
    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.menu, menu); 
     return true; 
    } 
} 

Dann habe ich jede Webseite in einem separaten Java-Datei definiert, die die Hauptdatei unten nennt, ist einer von ihnen

public class ColoradoMainSiteBrowser extends Activity { 

WebView webview; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.main); 
webview = (WebView) findViewById(R.id.webview); 
webview.setWebViewClient(new HelloWebViewClient()); 
webview.getSettings().setJavaScriptEnabled(true); 
webview.loadUrl("http://colorado.edu/"); 
} 
private class HelloWebViewClient extends WebViewClient { 
@Override 
public boolean shouldOverrideUrlLoading(WebView view, String url) 
{ 
view.loadUrl(url); 
return true; 
} 
} 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) { 
webview.goBack(); 
return true; 
} 
return super.onKeyDown(keyCode, event); 
} 
} 

Ich habe das Menü in der Hauptdatei definiert, ich muss nur die Methoden erstellen, so dass die Schaltflächen tun, was sie tun sollen. jede Hilfe wäre toll

Antwort

2

Ok, so dachte ich, dass ich schon auf Ihre Frage here

Neben beantwortet haben, scheinen Sie ähnliche Fragen replizieren zu mögen here und here

Wie ich schon gesagt habe, Sie können dies erstellen, indem Sie eine Aktivität erstellen, die eine URL als zusätzliche Absicht akzeptiert.

Nehmen Sie den Code als Basis Start:

Browser.java

import android.app.Activity; 
import android.os.Bundle; 
import android.view.KeyEvent; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 


public class Browser extends Activity { 

    private WebView webview; 

    private String URL; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.browser); 

     Bundle extras = getIntent().getExtras(); 

     if (extras == null) { 

      URL = "http://www.evonytools.org/"; 

     } else { 

      this.URL = extras.getString("URL"); 
     } 

     getWebView(); 

    } 

    public void getWebView() { 

     webview = (WebView) findViewById(R.id.webview); 
     webview.setWebViewClient(new HelloWebViewClient()); 
     webview.getSettings().setJavaScriptEnabled(true); 
     webview.loadUrl(this.URL); 
    } 

    private class HelloWebViewClient extends WebViewClient { 

     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      view.loadUrl(url); 
      return true; 
     } 
    } 

    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) { 
     webview.goBack(); 
     return true; 
     } 
    return super.onKeyDown(keyCode, event); 
    } 
} 

Layout/broswer.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="vertical" 
> 
    <WebView 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:id="@+id/webview" 
    /> 
</LinearLayout> 

Main.java

public class Main extends TabActivity{ 

     private TabHost tabHost; 

     private EditText addressBar; 

     private final static String DEFAULT_URL = "http://www.evonytools.org/"; 

     private int z = 0; 

     /** Called when the activity is first created. */ 
     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.tabs_main); 

      this.tabHost = getTabHost(); // The activity TabHost 
      this.addressBar = (EditText) findViewById(R.id.address_bar); 
      this.addressBar.setText(DEFAULT_URL); 


      ImageButton addBtn = (ImageButton) findViewById(R.id.add_btn); 

      addBtn.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View v) { 

        addMethod();  
       } 
      }); 

      Intent openBrowser = new Intent(); 
      openBrowser.setClass(this, Browser.class); 
      openBrowser.putExtra("URL", DEFAULT_URL); 
      tabHost.addTab(tabHost.newTabSpec("Main").setIndicator(getHost(DEFAULT_URL)).setContent(openBrowser)); 

     } 




     private void addMethod() { 

      String webSiteURL = validateURL(addressBar.getText().toString().trim()); 
      String webSiteName = getHost(webSiteURL); 

      Intent openBrowser = new Intent(); 
      openBrowser.setClass(this, Browser.class); 
      openBrowser.putExtra("URL", webSiteURL); 

      tabHost.addTab(tabHost.newTabSpec(webSiteName + Integer.toString(z)).setIndicator(webSiteName).setContent(openBrowser)); 

      ++z; 
     } 

     private void deleteMethod() { 

      // Since we can't really delete a TAB 
      // We hide it 

      int position = tabHost.getCurrentTab(); 

      if (position != 0) { 

       tabHost.getCurrentTabView().setVisibility(8); 
       tabHost.setCurrentTab(0); 
      } 
     } 

     // Inflates menu when "menu Key" is pressed 
     @Override 
     public boolean onCreateOptionsMenu(Menu menu) { 
      MenuInflater inflater = getMenuInflater(); 
      inflater.inflate(R.menu.menu, menu); 
      return true; 
     } 

     // This method is called once the menu is selected 
     @Override 
     public boolean onOptionsItemSelected(MenuItem item) { 


      switch (item.getItemId()) { 

       case R.id.add: 

        addMethod(); 

        break; 

       case R.id.delete: 

        deleteMethod(); 

        break; 
      } 
      return true; 
     } 

     private String validateURL(String url) { 

      StringBuffer urlB = new StringBuffer(); 

      // checks if addressBar has a valid URL 
      // you can add stuff here in order to validate 
      // this is just an example 
      if (url.startsWith("http://")) {urlB.append(url);} else {urlB.append("http://");} 

      try { 
       URL urlTry = new URL(urlB.toString()); 

       return urlB.toString(); 

      } catch (MalformedURLException e) { 

       return "http://www.google.com/"; 
      } 
     } 

     private String getHost(String url) { 

      try { 

       URL urlTry = new URL(url); 

       return urlTry.getHost().replace("www.", "").replace(".com", "").replace(".org", "").replace(".net", ""); 

      } catch (MalformedURLException e) { 

       return "Browser"; 
      } 
     } 
} 

tabs_main. xml

<?xml version="1.0" encoding="utf-8"?> 
<TabHost xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android:id/tabhost" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:padding="5dp"> 
     <TabWidget 
      android:id="@android:id/tabs" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:tag="tabPane" 
      /> 
     <RelativeLayout 
     android:orientation="vertical" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content"> 
      <EditText 
       android:id="@+id/address_bar" 
       android:layout_width="270px" 
       android:layout_height="50px" 
       android:layout_alignParentLeft="true" 
       android:layout_alignParentTop="true" 
      /> 
      <ImageButton 
       android:id="@+id/add_btn" 
       android:layout_width="50px" 
       android:layout_height="50px" 
       android:src="@android:drawable/ic_menu_add" 
       android:background="@android:color/transparent" 
       android:layout_toRightOf="@id/address_bar" 
      /> 

     </RelativeLayout> 
     <FrameLayout 
      android:id="@android:id/tabcontent" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:padding="2dp" /> 
    </LinearLayout>  

hoffe, ich bin deine Hausaufgaben nicht machen.

Verwandte Themen