Android 横向模式下的多片段布局
Android multi-fragment layout in landscape mode
虽然我的代码可以运行,但我现在不知道它实际在做什么。
我的应用程序是一个 RSS reader,主要内容在一个 Fragment
中,其中包含一个 ListView
和 NewsStory
个对象。单击列表项时,它会打开一个 Intent
,其中包含从 RSS 链接的网站。
现在的问题是,我不明白这里的Intent
,这不是我以前使用过的Intent
的方式。
此外,我必须做到这样,当我改变方向时,原始配置文件 Fragment
占据屏幕的左半部分,链接网页占据屏幕的右半部分。我已经对它进行了修补,但无济于事。我对方向变化做了一些研究,但我觉得用 Fragment
s 做事总是会改变一切的运作方式。不管怎样,这是 Fragment
代码。任何想法将不胜感激。
public class HeadlineFragment extends Fragment {
EditText input;
Button search;
ListView headlines;
NewsDataSource ds;
public HeadlineFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View v = inflater.inflate(R.layout.fragment_headline,container,false);
input = (EditText)v.findViewById(R.id.txtInput);
search = (Button)v.findViewById(R.id.btnSearch);
headlines = (ListView)v.findViewById(R.id.listView);
try {
ds = new NewsDataSource();
} catch (ExecutionException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
headlines.setAdapter(new NewsDataSourceAdapter(this.getActivity(), ds));
headlines.setOnItemClickListener(new AdapterView.OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> parent,View view, int position, long id)
{
String url = NewsDataSource.stories[position].getLink();
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
startActivity(i);
}
});
return v;
}
/*
@Override
public void onConfigurationChanged(Configuration newConfig){
super.onConfigurationChanged(newConfig);
}
*/
}
首先,关于Intent
,它是一个隐含的Intent
。当您将 action
设置为 ACTION_VIEW
并额外添加 URI / URL 时,OS 会收到消息,告知您要打开一个可以导航到该应用程序的应用程序URI / URL.
其次,为了在横向模式下显示双窗格布局,您必须在 Fragment
中显示 RSS 内容,而不是像您目前所做的那样在 Activity
中显示,并且您在横向模式下,必须在 Activity
中并排显示这些 Fragment
。请参阅 Retrieving a List of Contacts 示例,了解如何在纵向模式下显示多窗格主细节布局的非常好的解释。
参考文献:
虽然我的代码可以运行,但我现在不知道它实际在做什么。
我的应用程序是一个 RSS reader,主要内容在一个 Fragment
中,其中包含一个 ListView
和 NewsStory
个对象。单击列表项时,它会打开一个 Intent
,其中包含从 RSS 链接的网站。
现在的问题是,我不明白这里的Intent
,这不是我以前使用过的Intent
的方式。
此外,我必须做到这样,当我改变方向时,原始配置文件 Fragment
占据屏幕的左半部分,链接网页占据屏幕的右半部分。我已经对它进行了修补,但无济于事。我对方向变化做了一些研究,但我觉得用 Fragment
s 做事总是会改变一切的运作方式。不管怎样,这是 Fragment
代码。任何想法将不胜感激。
public class HeadlineFragment extends Fragment {
EditText input;
Button search;
ListView headlines;
NewsDataSource ds;
public HeadlineFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View v = inflater.inflate(R.layout.fragment_headline,container,false);
input = (EditText)v.findViewById(R.id.txtInput);
search = (Button)v.findViewById(R.id.btnSearch);
headlines = (ListView)v.findViewById(R.id.listView);
try {
ds = new NewsDataSource();
} catch (ExecutionException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
headlines.setAdapter(new NewsDataSourceAdapter(this.getActivity(), ds));
headlines.setOnItemClickListener(new AdapterView.OnItemClickListener()
{
@Override
public void onItemClick(AdapterView<?> parent,View view, int position, long id)
{
String url = NewsDataSource.stories[position].getLink();
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
startActivity(i);
}
});
return v;
}
/*
@Override
public void onConfigurationChanged(Configuration newConfig){
super.onConfigurationChanged(newConfig);
}
*/
}
首先,关于Intent
,它是一个隐含的Intent
。当您将 action
设置为 ACTION_VIEW
并额外添加 URI / URL 时,OS 会收到消息,告知您要打开一个可以导航到该应用程序的应用程序URI / URL.
其次,为了在横向模式下显示双窗格布局,您必须在 Fragment
中显示 RSS 内容,而不是像您目前所做的那样在 Activity
中显示,并且您在横向模式下,必须在 Activity
中并排显示这些 Fragment
。请参阅 Retrieving a List of Contacts 示例,了解如何在纵向模式下显示多窗格主细节布局的非常好的解释。
参考文献: