当前位置: 首页 > 面试题库 >

如何正确使用加载数组和保存数组方法?

杜辰龙
2023-03-14
问题内容

我有以下代码供用户单击按钮使用,当他们单击按钮时,正在查看的特定字符串将被收藏并存储在其他位置。

我有两个问题。

  1. 我现在所拥有的是什么问题?因为当您单击按钮时它会崩溃。

  2. 您将如何完成将要加载的字符串并将其保存到数组的load array方法,以便用户以后可以看到该数组?

谢谢你的时间!!

fav.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {

            loadArray("favorites");
            favorites = Arrays.copyOf(favorites, favorites.length+1);
            favorites[favorites.length]=display.getText().toString();
            saveArray(favorites, "favorites");

        }
    });

    home.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {

            Intent openStartingPoint = new Intent("starting.rt.Menu2");
            startActivity(openStartingPoint);
        }
    });

    search.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {

            Intent openStartingPoint = new Intent("starting.rt.Search");
            startActivity(openStartingPoint);
        }
    });

    moreapps.setOnClickListener(new View.OnClickListener() {

        public void onClick(View v) {

            Intent goToMarket;
            goToMarket = new Intent(Intent.ACTION_VIEW, Uri
                    .parse("market://search?q=pub:\"Wompa\""));
            startActivity(goToMarket);
        }
    });

}

public String[] loadArray(String arrayName) {  
    SharedPreferences prefs = getSharedPreferences("preferencename", 0);  
    int size = prefs.getInt(arrayName + "_size", 0);  
    String array[] = new String[size];  
    for(int i=0;i<size;i++)  
        array[i] = prefs.getString(arrayName + "_" + i, null);  
    return array;  
}

public boolean saveArray(String[] array, String arrayName) {   
    SharedPreferences prefs = getSharedPreferences("preferencename", 0);  
    SharedPreferences.Editor editor = prefs.edit();  
    editor.putInt(arrayName +"_size", array.length);  
    for(int i=0;i<array.length;i++)  
        editor.putString(arrayName + "_" + i, array[i]);  
    return editor.commit();  
}

原木猫

05-08 23:10:51.329: I/Process(495): Sending signal. PID: 495 SIG: 9
05-08 23:11:02.360: D/dalvikvm(504): GC_EXTERNAL_ALLOC freed 44K, 53% free 2553K/5379K, external 1625K/2137K, paused 221ms
05-08 23:11:08.599: D/dalvikvm(504): GC_EXTERNAL_ALLOC freed 16K, 51% free 2644K/5379K, external 2707K/3308K, paused 174ms
05-08 23:11:12.570: D/AndroidRuntime(504): Shutting down VM
05-08 23:11:12.570: W/dalvikvm(504): threadid=1: thread exiting with uncaught exception (group=0x40015560)
05-08 23:11:12.599: E/AndroidRuntime(504): FATAL EXCEPTION: main
05-08 23:11:12.599: E/AndroidRuntime(504): java.lang.NullPointerException
05-08 23:11:12.599: E/AndroidRuntime(504):  at starting.rt.Base$1.onClick(Base.java:52)
05-08 23:11:12.599: E/AndroidRuntime(504):  at android.view.View.performClick(View.java:2485)
05-08 23:11:12.599: E/AndroidRuntime(504):  at android.view.View$PerformClick.run(View.java:9080)
05-08 23:11:12.599: E/AndroidRuntime(504):  at android.os.Handler.handleCallback(Handler.java:587)
05-08 23:11:12.599: E/AndroidRuntime(504):  at android.os.Handler.dispatchMessage(Handler.java:92)
05-08 23:11:12.599: E/AndroidRuntime(504):  at android.os.Looper.loop(Looper.java:123)
05-08 23:11:12.599: E/AndroidRuntime(504):  at android.app.ActivityThread.main(ActivityThread.java:3683)
05-08 23:11:12.599: E/AndroidRuntime(504):  at java.lang.reflect.Method.invokeNative(Native Method)
05-08 23:11:12.599: E/AndroidRuntime(504):  at java.lang.reflect.Method.invoke(Method.java:507)
05-08 23:11:12.599: E/AndroidRuntime(504):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
05-08 23:11:12.599: E/AndroidRuntime(504):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
05-08 23:11:12.599: E/AndroidRuntime(504):  at dalvik.system.NativeStart.main(Native Method)
05-08 23:11:17.869: I/Process(504): Sending signal. PID: 504 SIG: 9

问题答案:

loadArray函数返回String[]。您可能想要像这样使用它:

String [] arr = loadArray("favorites");

该数组可以稍后在第二部分中使用。希望这可以帮助。

更新 [根据您的评论]

因此,如果您想在TextView中获取文本并希望将其添加到List / String数组中:

1)尝试从TextView获取字符串

TextView display = (TextView)findViewById(R.id.display);
String toSave = display.getText().toString();

2)使用`loadArray’从SharedPreferences获取现有列表:

String [] arr = loadArray("favorites");

3)添加新的字符串:

ArrayList<String> arrList = new ArrayList<String>();

for (int i=0; i<arr.length(); i++) {
     arrList.add(arr[i]); //add old values to arraylist
}
// add new string to it: 
arrList.add(toSave);

//Get back your array
String [] array = arrList.toArray(new String[arrList.size()]);

4)再次保存。

saveArray(array, "favorites");


 类似资料:
  • 问题内容: 我有一个脚本,生成 带有和形状为的二维s 。现在,我正在使用阵列并执行IO操作。但是,这些功能对于每个阵列都需要花费几秒钟。是否有更快的方法来保存和加载整个数组(即,无需假设其内容并减少它们)?我愿意在保存之前将s转换为另一种类型,只要准确保留数据即可。 问题答案: 对于真正的大型阵列,我听说过几种解决方案,它们大多是对I / O懒惰: NumPy.memmap,将大数组映射为二进制形

  • 问题内容: 我正在用Swift编写iOS游戏,但我想在结尾加上高分标签。我认为保存功能是正确的,但负载之一就是给我带来麻烦的功能。我已经创建了一个实体(“ BestScores”)和属性(“ classicBestScoreTF”): 要保存最高分: 它不起作用:(请帮忙! 问题答案: 保存数据: 加载数据中:

  • 问题内容: 尝试从我知道仅包含整数的数组中获取最高和最低值似乎比我想象的要难。 我希望这能显示出来。相反,它显示。因此,似乎排序是将值作为字符串处理。 有没有一种方法可以使sort函数对整数值进行实际排序? 问题答案: 默认情况下,sort方法按字母顺序对元素进行排序。要进行数字排序,只需添加一个处理数字排序的新方法(sortNumber,如下所示)- 在ES6中,可以使用箭头功能简化此操作: 说

  • 我正在尝试声明和初始化一个保存类数组 这是我用来解决项目内存管理问题的示例。我可以声明指针,但无法初始化它。 收到的错误: 对非常量表达式函数“void*operator new”的调用std::unique_ptr ship_crew_members=std::make_unique

  • 问题内容: 我有一个类,可以根据消息的类将传入的消息映射到匹配的读者。所有消息类型都实现接口消息。读者在mapper类中注册,说明它将能够处理的消息类型。这些信息需要以某种方式存储在消息阅读器中,而我的方法是从构造函数中设置一个数组。 现在,似乎我对泛型和/或数组有些误解,似乎无法弄清楚,请参见下面的代码。它是什么? ETA : 正如cletus正确指出的那样,最基本的谷歌搜索表明Java不允许通

  • 本文向大家介绍实例解析如何正确使用Java数组,包括了实例解析如何正确使用Java数组的使用技巧和注意事项,需要的朋友参考一下 一.关于数组的特点 1.在Java中,无论使用数组或集合,都有边界检查。如果越界操作就会得到一个RuntimeException异常。 2.数组只能保存特定类型。数组可以保存原生数据类型,集合则不能。集合不以具体的类型来处理对象,它们将所有对象都按Object类型处理,集