私は Java と Android の開発が初めてで、学生向けの C と Java の基本的なプログラムにアクセスして読み取るためのシンプルな GUI を含むアプリケーションに取り組んでいます。
データベースの特定の列に事前にロードされているテキスト ファイル (この場合は C プログラム) を Web ビューに入力しようとしています。
スクロールとズームを同時に実装するのは非常に難しいため、スクロールビューを使用しないことにしました。ズームにはカスタム実装が必要ですが、これは私には理解が困難でした。
したがって、簡単にスクロールでき、テキストのズームを実装するのに 1 行のコードしか必要ないため、webview を使用することにしました。
私には2つの問題があります:
1) webview は、現在の実装を使用して改行を処理できません。つまり、次の行に移動する代わりに、同じ行にすべてのテキストを表示しようとします。
2) "stdio.h"、"stdlib.h" など....基本的に、ほとんどすべての C プログラムの一部である .h 拡張子を持つすべての単語を表示しません。これらを表示することが不可欠です。
次の2つの実装を試しました(おそらく間違っています):
1) loadData (文字列データ、文字列 mimeType、文字列エンコーディング)
2) loadDataWithBaseURL (文字列 baseUrl、文字列データ、文字列 mimeType、文字列エンコーディング、文字列 historyUrl)
私のコードは次のとおりです。
package com.example.uopengineering;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import android.app.Activity;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.webkit.WebView;
public class viewProgramActivity<x> extends Activity {
private SQLiteDatabase database;
ExternalDbOpenHelper dbOpenHelper;
private WebView webView;
private static final String DB_NAME = "umangdb.db";
private String rowid;
private String programtext;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.viewprogram);
dbOpenHelper = new ExternalDbOpenHelper(this, DB_NAME);
database = dbOpenHelper.openDataBase();
Intent intent=getIntent();
rowid=intent.getStringExtra("myextra");
String query="select * from engg_table where _id="+rowid;
Cursor myCursor = database.rawQuery(query,null);
myCursor.moveToFirst();
programtext=myCursor.getString(4);
myCursor.close();
webView = (WebView) findViewById(R.id.webView1);
webView.getSettings().setBuiltInZoomControls(true);
webView.getSettings().setJavaScriptEnabled(true);
//webView.loadData(programtext, "text/html", "UTF-8");
try {
webView.loadData(URLEncoder.encode(programtext,"utf-8").replaceAll("\\+"," "), "text/html", "utf-8");
//webView.loadDataWithBaseURL(null, programtext, null, query, null);
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
対応する 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" >
<TextView
android:id="@+id/article"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxLines = "22"
android:scrollbars = "vertical"
/>
<WebView
android:id="@+id/webView1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true" />
</RelativeLayout>
同様の質問がある他のフォーラムを調べましたが、適切な解決策を見つけることができませんでした。そのうちの 1 人は、javascript を使用してこの問題を回避することを提案しました。JavaScript について私が知っているのは、大学のプロジェクトの Web アプリケーション フォームで検証を行っていることだけです。これは可能ですか?? もしそうなら、どのようにjavascriptを学び、どのように正確に実装することをお勧めしますか.
また、replaceAll("\+"," ")はどのように機能しますか?不要な文字をどのように削除しますか??また、文字エンコーディング標準にあまり詳しくありません