2014-02-18 4 views
0

Я создаю веб-приложение для Android, используя WebView, и хочу добавить к нему функцию истории. Я не могу найти решение где-либо еще, поэтому, если кто-нибудь может мне помочь, это будет здорово. Как я могу использовать приложение для сохранения всей истории в новом Activity (History.java)?вариант истории в приложении для Android android

* activity_main.xml *

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".MainActivity" > 

<WebView 
    android:id="@+id/webview" 
    android:layout_width="fill_parent" 
    android:layout_height="490dp" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentLeft="true" 
    android:layout_below="@+id/editText1" /> 

<Button 
    android:id="@+id/go" 
    android:layout_width="100dp" 
    android:layout_height="wrap_content" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentTop="true" 
    android:text="@string/button_fix" /> 

<EditText 
    android:id="@+id/editText1" 
    android:layout_width="300dp" 
    android:layout_height="200dp" 
    android:layout_alignBaseline="@+id/go" 
    android:layout_alignBottom="@+id/go" 
    android:layout_alignParentLeft="true" 
    android:layout_toLeftOf="@+id/go" 
    android:ems="10" 
    android:hint="@string/type_url" > 

    <requestFocus /> 
</EditText> 

</RelativeLayout>` 

MainActivity.java

public class MainActivity extends Activity implements OnClickListener { 

private static final String TAG = "blaze web view 2"; 
private WebView wv; 
private Button go; 
private EditText url; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    wv = (WebView) findViewById(R.id.webview); 
    wv.getSettings().setJavaScriptEnabled(true); 
    wv.setWebViewClient(new BlazeWebViewClient()); 
    wv.getSettings().setBuiltInZoomControls(true); 
    wv.getSettings().setSupportMultipleWindows(true); 
    wv.getSettings().setSupportZoom(true); 
    wv.getSettings().setDisplayZoomControls(false); 

    try { 
     wv.loadUrl("http://www.google.com"); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

    go = (Button) findViewById(R.id.go); 
    go.setOnClickListener(this); 

    url = (EditText) findViewById(R.id.editText1); 
    url.setOnClickListener(this); 

} 

@Override 
public void onClick(View v) { 
    switch (v.getId()) { 

    case R.id.go: 
     String theWebsite = url.getText().toString(); 
     if ((theWebsite.isEmpty())) { 
      go.setText("GO"); 
      wv.loadUrl("http://www.google.com"); 
     } 

     else { 
      theWebsite = "http://" + url.getText().toString(); 
      wv.loadUrl(theWebsite); 
      go.setText("Home"); 
     } 
     url.setText(""); 
     break; 

    case R.id.editText1: 
     go.setText("GO"); 
     Log.i("EDITTEXT", "EDIT TEXT WAS CLICKED"); 

    } 

} 

private class BlazeWebViewClient extends WebViewClient { 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView webview, String Url) { 
     webview.loadUrl(Url); 
     return true; 

    } 
} 

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

@Override 
protected void onStart() { 
    super.onStart(); 
    Log.i(TAG, "On Start"); 
} 

@Override 
protected void onRestart() { 
    super.onRestart(); 
    Log.i(TAG, "On Restart"); 
} 

@Override 
protected void onPause() { 
    super.onPause(); 
    Log.i(TAG, "On Pause"); 
} 

@Override 
protected void onResume() { 
    super.onResume(); 
    Log.i(TAG, "On Resume"); 
} 

@Override 
protected void onDestroy() { 
    super.onDestroy(); 
    Log.i(TAG, "On Destroy"); 
} 

@Override 
protected void onStop() { 
    super.onStop(); 
    Log.i(TAG, "On Stop"); 
} 

@Override 
public void onSaveInstanceState(Bundle outState) { 
    super.onSaveInstanceState(outState); 
    wv.saveState(outState); 
    Log.i(TAG, "onSavedInstanceState"); 
} 

@Override 
public void onRestoreInstanceState(Bundle savedInstanceState) { 
    super.onRestoreInstanceState(savedInstanceState); 
    wv.restoreState(savedInstanceState); 
    Log.i(TAG, "RestoreInstanceState"); 
} 

@Override 
public boolean onCreateOptionsMenu(android.view.Menu menu) { 
    super.onCreateOptionsMenu(menu); 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.main, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 

    case R.id.back: 
     back(); 
     return true; 

    case R.id.forward: 
     forward(); 
     return true; 

    case R.id.refresh: 
     refresh(); 
     return true; 

    case R.id.chistory: 
     history(); 
     return true; 
    case R.id.History: 
     History(); 
     return true; 

    default: 
     return super.onOptionsItemSelected(item); 
    } 

} 

private void History() { 
    Intent i = new Intent(this, History.class); 
    startActivity(i); 

} 

private void history() { 
    wv.clearHistory(); 
    Log.i("H", "Cleared History"); 
} 

private void refresh() { 
    wv.reload(); 
    Log.i("R", "Page Reloaded"); 
} 

private void forward() { 
    wv.goForward(); 
    Log.i("F", "Page Foward"); 
} 

private void back() { 
    wv.goBack(); 
    Log.i("B", "Page Backward"); 
} 
    } 

ответ

0

Вы, возможно, ищете doUpdateVisitedHistory и getVisitedHistory APIs? Первый из них позволяет узнать, когда пользователь перешел на новую страницу (так что вы можете сохранить его в своей базе данных истории), а второй (необязательный) позволяет указать WebView содержимое вашей базы данных истории, чтобы посещенные ссылки имели разного цвета. Ваша деятельность в истории должна была бы прочитать вашу базу данных истории и перечислить записи, которые она содержит.

+0

Я думаю, что это то, что мне нужно, но я только начинаю делать приложения. что мне нужно сделать, чтобы история отображалась на xml, используя те, что указаны в API @ marcin.koshiba – Jordan

Смежные вопросы