I want to use a SQLite DB where I can add a name and an IP from a Fragmentto the DB.
In the Fragment: Add_DDC I use an EditText field, where I type in the name which I want to show in the spinner, and an EditText field, where I type in the IP which I want to use for the WebView in the other Fragment.
My first problem is that, when I try to add a name and an IP to the DB, nothing will be showed in the spinner which is in the WebView Fragment.
The other problem is, that I don't know how I can, show the name in the spinner but let the WebView update the IP which was typed in with the name in the ADD_DD Fragment.
Here is my whole code, I hope you guys can help me out.
Database.class
package com.wietzorek.kevin.smartliving;
import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;
import java.util.ArrayList;
import java.util.List;
public class Database {
/* Datenbanktyp festlegen */
private SQLiteDatabase db;
/* Datenbank erstellen */
public Database(Context ctx) {
db = ctx.openOrCreateDatabase(
"DDC_DB.db"
, SQLiteDatabase.CREATE_IF_NECESSARY
, null
);
/* Tabelle in Datenbank erstellen */
final String CREATE_TABLE_data_information =
"CREATE TABLE IF NOT EXISTS data_information ("
+ "name VARCHAR,"
+ "ip VARCHAR);";
try {
db.execSQL(CREATE_TABLE_data_information);
} catch (Exception e) {
Log.i("Fehler", e.getMessage());
}
}
/* Funktion "Alle Informationen aus der Datenbank holen" */
public Cursor getData() {
Cursor c = this.db.rawQuery("SELECT * FROM data_information ORDER BY _id DESC", null);
return c;
}
/* Funktion: "Daten in die Datenbank schreiben" */
public void insertData(ContentValues values) throws Exception {
try {
this.db.insert("data_information", null, values);
} catch (Exception e) {
throw e;
}
}
/* Funktion: "Daten aus der Datenbank löschen" */
public void deleteByName(String text) {
this.db.delete("data_information", "name" + text, null);
}
/* Funktion: "Alle Daten aus der Spalte "Name" auslesen" */
public List<String> getAllNames() {
List<String> names = new ArrayList<String>();
String selectQuery = "SELECT name FROM data_information";
Cursor cursor = db.rawQuery(selectQuery, null);
if (cursor.moveToFirst()) {
do {
names.add(cursor.getString(0));
} while (cursor.moveToNext());
}
return names;
}
/* Funktion: "Alle Daten aus der Spalte "IP" auslesen" */
public List<String> getAllIPs() {
List<String> ip = new ArrayList<String>();
String selectQuery = "SELECT ip FROM data_information";
Cursor cursor = db.rawQuery(selectQuery, null);
if (cursor.moveToFirst()) {
do {
ip.add(cursor.getString(0));
} while (cursor.moveToNext());
}
return ip;
}
}
ADD_DDC Fragment
package com.wietzorek.kevin.smartliving;
import android.app.Fragment;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.content.ContentValues;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class Add_DDC extends Fragment {
/* Datenbank einbinden */
private Database db;
/* Anlegen der Variablen */
Button btn_add, btn_delete, btn_back;
EditText ddc_name, ddc_ip;
public void onResume(){
super.onResume();
/* "ActionBar Title" festlegen */
((MainActivity) getActivity())
.setActionBarTitle("DDC hinzufügen");
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final View view = inflater.inflate(R.layout.add_ddc, container, false);
db = new Database(getActivity());
/* Eingabefelder zuweisen */
ddc_name = (EditText) view.findViewById(R.id.edit_ddc_name);
ddc_ip = (EditText) view.findViewById(R.id.edit_ddc_ip);
final String new_ddc_name = ddc_name.getText().toString();
final String new_ddc_ip = ddc_ip.getText().toString();
/* Button "DDC HINZUFÜGEN" */
btn_add = (Button) view.findViewById(R.id.btn_add);
btn_add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (ddc_name.getText().length() != 0 && ddc_ip.getText().length() != 0) {
/* Einfügen der eingebenen Texte in die Datenbank */
ContentValues values = new ContentValues();
values.put("name", new_ddc_name);
values.put("ip", "http//:" + new_ddc_ip);
try {
db.insertData(values);
Log.i("test", "data inserted");
}
catch(Exception e) {
Log.i("Fehler", e.getMessage());
}
}
else {
Toast.makeText(getActivity(), "Bitte DDC Name und DDC IP:Port eingeben",
Toast.LENGTH_LONG).show();
}
}
});
/* Button "DDC LÖSCHEN" */
btn_delete = (Button) view.findViewById(R.id.btn_delete);
btn_delete.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
if (ddc_name.getText().length() != 0) {
/* Löschen des eingebenen Namens aus der Datenbank */
db.deleteByName(new_ddc_name);
}
else {
Toast.makeText(getActivity(), "Bitte vorhandenen DDC Name eingeben",
Toast.LENGTH_LONG).show();
}
}
});
/* Button "Zurück" */
btn_back = (Button) view.findViewById(R.id.btn_back);
btn_back.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
/* Zurück zur Ansicht "Webview" */
Fragment fr;
fr = new Webview();
FragmentManager fm = getFragmentManager();
FragmentTransaction fragmentTransaction = fm.beginTransaction();
fragmentTransaction.replace(R.id.fragment_place, fr);
fragmentTransaction.commit();
}
});
return view;
}
}
WebView Fragment
package com.wietzorek.kevin.smartliving;
import android.app.Fragment;
import android.content.res.Configuration;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.Toast;
import java.util.List;
public class Webview extends Fragment {
/* Datenbank einbinden */
private Database db;
/* Anlegen der Variablen */
WebView myWebView;
Spinner ddc_spinner;
ArrayAdapter dataAdapter;
public void onResume(){
super.onResume();
/* "ActionBar Title" festlegen */
((MainActivity) getActivity())
.setActionBarTitle("Start");
}
/* Neuladen der "WebView" Funktion verhindern
* bei "Orientation change" (Portrait/Landscape) */
@Override
public void onConfigurationChanged(Configuration newConfig){
super.onConfigurationChanged(newConfig);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.webview, container, false);
db = new Database(getActivity());
/* Dropdownmenü initialisieren */
ddc_spinner = (Spinner) view.findViewById(R.id.ddc_spinner);
List<String> names = db.getAllNames();
dataAdapter = new ArrayAdapter<String>(this.getActivity(),
android.R.layout.simple_spinner_item, names);
dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
ddc_spinner.setAdapter(dataAdapter);
dataAdapter.notifyDataSetChanged();
ddc_spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
String name = parent.getItemAtPosition(pos).toString();
Toast.makeText(parent.getContext(), name,
Toast.LENGTH_LONG).show();
/* Auswahl laden*/
myWebView.loadUrl(name);
}
public void onNothingSelected(AdapterView<?> parent) {
}
});
/* WebView Einstellungen */
myWebView = (WebView) view.findViewById(R.id.webView);
myWebView.setVerticalScrollBarEnabled(true);
myWebView.setHorizontalScrollBarEnabled(true);
myWebView.setWebViewClient(new WebC());
myWebView.getSettings().setDisplayZoomControls(true);
myWebView.getSettings().setUseWideViewPort(true);
myWebView.getSettings().setLoadWithOverviewMode(true);
myWebView.getSettings().setSupportZoom(true);
myWebView.getSettings().setDefaultZoom(WebSettings.ZoomDensity.FAR);
myWebView.getSettings().setBuiltInZoomControls(true);
myWebView.setInitialScale(0);
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setDomStorageEnabled(true);
return view;
}
/* WebView Client implementieren */
public class WebC extends WebViewClient {
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl);
}
}
}
Aucun commentaire:
Enregistrer un commentaire