いつも、お世話になっております。
現在、数字を入力すると、フィボナッチ数列を還すアプリを作成しています
はじめはFirebaseを利用していましたが、今回は練習としてSharedPreferencesを利用しようとしています
目標
・入力された数字が、以前にも入力された数字である場合、もう一度フィボナッチ数列を計算するのではなくて、SharedPreferencesに保存された(入力された数字 : フィボナッチ数列)から、数列を取り出して、別のアクティビティに表示する
SharedPreferenceに保存することはできたのですが、入力された数字が以前に入力されたかどうか、判断する方法が検討つきません
ご教授いただけると幸いです。
開発環境
Android Studio 3.6.1
MacOS Catalina 1.15.4
Java
MainActivity.java(数字入力画面コード)↓
package com.ljuv.fibonacciapp.activities; import androidx.appcompat.app.AppCompatActivity; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import com.ljuv.fibonacciapp.R; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { final Context context = this; super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button okButton = findViewById(R.id.button_ok); final EditText fibonacciSeq = findViewById(R.id.tv_fibonacci_sequence); okButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(!fibonacciSeq.getText().toString().isEmpty()) { Intent intent = new Intent(context, FibonacciListActivity.class).putExtra("nums", Integer.parseInt( fibonacciSeq.getText().toString()) ); startActivity(intent); } } }); } }
FibonacciListActivity.java(フィボナッチ数列の表示画面コード)↓
package com.ljuv.fibonacciapp.activities; import androidx.appcompat.app.AppCompatActivity; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import android.content.Context; import android.content.SharedPreferences; import android.os.Bundle; import android.widget.TextView; import com.google.common.reflect.TypeToken; import com.google.gson.Gson; import com.ljuv.fibonacciapp.utils.FibonacciNumbersCalculator; import com.ljuv.fibonacciapp.R; import com.ljuv.fibonacciapp.lists.RecyclerViewFibonacciAdapter; import java.util.ArrayList; import java.util.List; public class FibonacciListActivity extends AppCompatActivity { TextView loadingView; RecyclerView recyclerView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_fibonacci_list); recyclerView = findViewById(R.id.recyclerView); recyclerView.setLayoutManager(new LinearLayoutManager(this)); int nums = getIntent().getIntExtra("nums", 1); //int iterations = 100; //このメソッドでフィボナッチが計算されているんので、この前に入力された数字を検索する必要がある ArrayList<Long> fibList = FibonacciNumbersCalculator.getNums(nums); RecyclerViewFibonacciAdapter adapter = new RecyclerViewFibonacciAdapter(fibList); recyclerView.setAdapter(adapter); Gson gson = new Gson(); SharedPreferences sharedPreferences = getSharedPreferences("MySharedPref", MODE_PRIVATE); SharedPreferences.Editor myEdit = sharedPreferences.edit(); //入力された数字を保存 myEdit.putInt( "inputNum", nums); //計算語の配列を保存 myEdit.putInt( "fibAfterCalc", Integer.parseInt( gson.toJson(fibList))); //データベースの中は 「12(入力された数字): 01123581321345589(フィボナッチ)数列」 myEdit.putInt( "fibAfterCalc", Integer.parseInt( gson.toJson(fibList))); //myEdit.putString("", gson.toJson(fibList)); //myEdit.commit(); } }
FibonacciNumberCalculator.java(フィボナッチ計算コード)↓
package
1 2 3import android.content.SharedPreferences; 4 5import com.google.gson.Gson; 6 7import java.util.ArrayList; 8 9public class FibonacciNumbersCalculator { 10 11 public static ArrayList<Long> getNums(int count) { 12 long first = 0; 13 long second = 1; 14 15 ArrayList<Long> list = new ArrayList<>(count); 16 17 list.add(first); 18 list.add(second); 19 20 long prev = 0; 21 long prev2 = 1; 22 long current; 23 for( int i = 2; i< count; ++i) { 24 current = prev + prev2; 25 list.add(current); 26 prev = prev2; 27 prev2 = current; 28 } 29 return list; 30 } 31 32} 33
回答2件
あなたの回答
tips
プレビュー