Eclispe ADT for androidで簡単なAndroidコードを使用して、入力文字列を逆にします。逆文字列関数は個別に記述され、jarファイルとしてエクスポートしました。次に、Androidプロジェクトのlibsフォルダーにjarを追加しました。プロジェクトの日食はamyエラーを表示していませんが、実行時にユーザー入力文字列を入力して文字列ボタンをクリックすると、エミュレーターに「残念ながら'My First Project'hasstopped」というメッセージが表示されます。
これは私のメインのAndroidアクティビティクラスです
package com.example.myfirstproject;
import Reverse.ReverseSentence;
import android.os.Bundle;
import android.app.Activity;
import android.view.View;
import android.view.Menu;
import android.widget.Toast;
import android.widget.EditText;
import android.widget.RadioButton;
public class MainActivity extends Activity {
private EditText text1,text2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
text1=(EditText)findViewById(R.id.editText1);
text2=(EditText)findViewById(R.id.editText2);
}
public void onClick(View view) {
switch (view.getId()) {
case R.id.button1:
RadioButton celsiusButton = (RadioButton) findViewById(R.id.radio0);
RadioButton fahrenheitButton = (RadioButton) findViewById(R.id.radio1);
if (text1.getText().length() == 0) {
Toast.makeText(this, "Please enter a valid number",
Toast.LENGTH_LONG).show();
return;
}
float inputValue = Float.parseFloat(text1.getText().toString());
if (celsiusButton.isChecked()) {
text1.setText(String
.valueOf(convertFahrenheitToCelsius(inputValue)));
celsiusButton.setChecked(false);
fahrenheitButton.setChecked(true);
} else {
text1.setText(String
.valueOf(convertCelsiusToFahrenheit(inputValue)));
fahrenheitButton.setChecked(false);
celsiusButton.setChecked(true);
}
break;
case R.id.button2:
String inputString=text2.getText().toString();
if(text2.getText().length()==0){
Toast.makeText(this, "You have enetered blank ", Toast.LENGTH_LONG).show();
return;
}
try{
//Reverse.ReverseSentence rObj=new Reverse.ReverseSentence();
ReverseSentence rObj=new ReverseSentence();
String outputString=new String();
outputString=rObj.reverseString(inputString);
text2.setText(outputString);
}
catch(Exception e){
e.printStackTrace();
}
break;
}
}
// Converts to celsius
private float convertFahrenheitToCelsius(float fahrenheit) {
return ((fahrenheit - 32) * 5 / 9);
}
// Converts to fahrenheit
private float convertCelsiusToFahrenheit(float celsius) {
return ((celsius * 9) / 5) + 32;
}
//Reverses a string
/*public String reverseString(String input){
String original,reverse="";
//Scanner scanner=new Scanner(System.in);
original=input;
System.out.println("The input string is "+ original);
int length=original.length();
for(int i=length-1;i>=0;i--){
reverse=reverse+original.charAt(i);
}
return reverse;
}*/
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
私が使用しているjarファイルには次のコンポーネントがあります。1 META-INFフォルダー、2 .classpathファイル、3.propertiesファイル42つのクラスファイルPalindrome.classと
ReverseSentence.classを含むフォルダーReeverse
2つのクラスのソースコードは次のとおりです。-
Palindrome.class
package Reverse;
import java.util.*;
public class Palindrome {
public static void main(String args[]){
System.out.println("Type a string to give input");
Scanner scanner=new Scanner(System.in);
String inputString=new String();
String outputString=new String();
inputString=scanner.nextLine();
scanner.close();
System.out.println("The input String is "+inputString);
ReverseSentence r=new ReverseSentence();
outputString=r.reverseString(inputString);
System.out.println("The output String is "+outputString);
if(inputString.equalsIgnoreCase(outputString)){
System.out.println("The string is a palindrome");
}
else{
System.out.println("The string is not a palindrome");
}
System.out.println("The program is working fine");
}
/**
* @param args
*/
}
ReverseSentenceクラス:-
package Reverse;
public class ReverseSentence {
String original,reverse="";
public ReverseSentence(){
}
public ReverseSentence(String input){
this.original=input;
}
public String reverseString(String input){
//Scanner scanner=new Scanner(System.in);
original=input;
System.out.println("The input string is "+ original);
int length=original.length();
for(int i=length-1;i>=0;i--){
reverse=reverse+original.charAt(i);
}
return reverse;
}
}
問題を解決するための解決策が得られません。JavaコードはJDK1.7を使用して構築されているため、Androidの設定->コンパイラ->JDK準拠を1.7に修正しようとしました。しかし、まだアプリがクラッシュしています。
Java開発IDEとしてEclipseJunoEEを使用し、AndroidIDEとしてEclipsejavaADTを使用しています。
これはAndroidでjarファイルの使いやすさをチェックする簡単なプログラムですが、noClassDefFoundエラーが発生します。おそらく何かが足りないので、それはばかげた問題ですが、それでも私はこれで立ち往生しています。
助けてください....