我的r.string.display_preferences_sort_default_value
没有从strings.xml文件返回正确的值。xml中的declare值是“popular”,但是onStart()方法中返回的值是“popularity.desc”。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
...
}
public void onStart() {
super.onStart();
// get sort order to see if it has recently changed
String prefSortOrder = prefs.getString(
getString(R.string.display_preferences_sort_order_key),
getString(R.string.display_preferences_sort_default_value)
);
...
}
<string name="display_preferences_sort_order_key">sortType</string>
<string name="display_preferences_sort_default_value">popular</string>
public class MovieListFragment extends Fragment{
private final String LOG_TAG = MovieListFragment.class.getSimpleName();
private final String STORED_MOVIES = "stored_movies";
private SharedPreferences prefs;
private ImageAdapter mMoviePosterAdapter;
String sortOrder;
List<Movie> movies = new ArrayList<Movie>();
public MovieListFragment() {
setHasOptionsMenu(true);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
prefs = PreferenceManager.getDefaultSharedPreferences(getActivity());
sortOrder = prefs.getString(getActivity().getString(R.string.display_preferences_sort_order_key),
getActivity().getString(R.string.display_preferences_sort_default_value));
if(savedInstanceState != null){
ArrayList<Movie> storedMovies = new ArrayList<Movie>();
storedMovies = savedInstanceState.<Movie>getParcelableArrayList(STORED_MOVIES);
movies.clear();
movies.addAll(storedMovies);
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
return super.onOptionsItemSelected(item);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
mMoviePosterAdapter = new ImageAdapter(
getActivity(),
R.layout.list_item_poster,
R.id.list_item_poster_imageview,
new ArrayList<String>());
View rootView = inflater.inflate(R.layout.fragment_movie_list, container, false);
GridView gridView = (GridView) rootView.findViewById(R.id.main_movie_grid);
gridView.setAdapter(mMoviePosterAdapter);
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long l) {
Movie details = movies.get(position);
Intent intent = new Intent(getActivity(), MovieDetailActivity.class)
.putExtra("movies_details", details);
startActivity(intent);
}
});
return rootView;
}
@Override
public void onStart() {
super.onStart();
// get sort order to see if it has recently changed
String prefSortOrder = prefs.getString(getString(R.string.display_preferences_sort_order_key),
getString(R.string.display_preferences_sort_default_value));
if(movies.size() > 0 && prefSortOrder.equals(sortOrder)) {
updatePosterAdapter();
}else{
sortOrder = prefSortOrder;
getMovies();
}
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
ArrayList<Movie> storedMovies = new ArrayList<Movie>();
storedMovies.addAll(movies);
outState.putParcelableArrayList(STORED_MOVIES, storedMovies);
}
private void getMovies() {
FetchMoviesTask fetchMoviesTask = new FetchMoviesTask(new AsyncResponse() {
@Override
public void onTaskCompleted(List<Movie> results) {
movies.clear();
movies.addAll(results);
updatePosterAdapter();
}
});
fetchMoviesTask.execute(sortOrder);
}
// updates the ArrayAdapter of poster images
private void updatePosterAdapter() {
mMoviePosterAdapter.clear();
for(Movie movie : movies) {
mMoviePosterAdapter.add(movie.getPoster());
}
}
试试这个:
String prefSortOrder = prefs.getString(getActivity().getString(R.string.display_preferences_sort_order_key),getActivity().getString(R.string.display_preferences_sort_default_value));
参考:在Android.support.v4.app.FragmentPagerAdapter中访问getString()?
问题内容: 我希望模仿允许用户指定“默认”返回值的内置函数(如)的行为。我最初的尝试是这样做 问题是,如果用户希望成为其返回值,则此函数将引发异常。第二次尝试: 这解决了上述问题,并允许用户指定任何任意值,但是带来了麻烦,因为用户必须始终在其函数调用中进行指定;他们不能只提供最后。同样,可以使用,但如果用户偏爱该语法,则会阻止用户使用。 结合并提供了可行的解决方案,但感觉这需要付出很多努力。它还可
问题内容: 有什么办法可以从中读取文件? 我对库或类/代码文件仅在中定义的字符串不感兴趣 问题答案: 是的,您可以使用以下命令提取所有资源文件 脚步 - 要么
问题内容: 是否有可能为集合中未找到的所有键返回默认值? 问题答案: [更新] 正如其他答案和评论者所指出的那样,从Java 8开始,您可以简单地调用。 [原版的] 没有Map实现可以完全做到这一点,但是通过扩展HashMap来实现自己的实现很简单:
我正在尝试在Spring中使用MessageSource注入文本消息。我编写的程序编译良好,但它总是打印出默认消息,而不是从. Properties文件中获取正确的值。我一点线索也没有。 下面是尝试注入文本的Circle类: 下面是bean配置文件的一部分: 我存储问候语和画图。圈入消息。属性文件,并编写了一个主类。但输出总是: 有人知道我的情况可能会出什么问题吗? 更新感谢您的建议。我正在调试,
我有一个托管在openShift上的wordpress应用程序,使用php-5.4墨盒部署。到今天为止,它再次使用php-5.3二进制文件,这会引发很多错误。我已经重新启动了应用程序以及php墨盒,仍然是相同的错误。我该如何修复这个问题? 哪个php /usr/bin/php php -v PHP警告:PHP启动:无法加载动态库'/usr/lib 64/PHP/modules/LDAP . so
问题内容: 在PHP中,如何从包含的脚本返回到包含它的脚本? IE浏览器: 1-主脚本2-应用程序3-包含 基本上,我想从3返回2,return()不起作用。 代码2-应用 问题答案: includeme.php: main.php: 也给出相同的结果 这是PHP鲜为人知的功能之一,但是对于设置非常简单的配置文件来说可能会很好。