Android 如何在我的应用程序片段应用程序中调用crouton.makeText?
我想使用Crouton Library打印asyntask之后收到的文章数量 我的应用程序使用navigationDrawer和其他片段 我从未使用过此库,我想知道我必须在哪里调用Crouton.makeText才能在我的应用程序中打印Crouton通知 作为参考,我的应用程序的每个片段都会显示一个列表视图,其中包含一个列表或一篇文章 以下是RssService类的代码:Android 如何在我的应用程序片段应用程序中调用crouton.makeText?,android,android-fragments,android-notifications,crouton,Android,Android Fragments,Android Notifications,Crouton,我想使用Crouton Library打印asyntask之后收到的文章数量 我的应用程序使用navigationDrawer和其他片段 我从未使用过此库,我想知道我必须在哪里调用Crouton.makeText才能在我的应用程序中打印Crouton通知 作为参考,我的应用程序的每个片段都会显示一个列表视图,其中包含一个列表或一篇文章 以下是RssService类的代码: import java.io.IOException; import java.net.URL; import java.u
import java.io.IOException;
import java.net.URL;
import java.util.List;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import de.keyboardsurfer.android.widget.crouton.Crouton;
import de.keyboardsurfer.android.widget.crouton.Style;
import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;
import android.util.Log;
import android.view.ViewGroup;
import android.widget.Adapter;
import android.widget.AdapterView;
public class RssService extends AsyncTask<String, Void, List<Article>> {
private ProgressDialog progress;
private Context context;
private BretagneNewsFragment derniereNewsListFrag;
public RssService(BretagneNewsFragment derniereNewsListFragment) {
context = derniereNewsListFragment.getActivity();
derniereNewsListFrag = derniereNewsListFragment;
progress = new ProgressDialog(context);
progress.setMessage("Chargement en cours ...");
}
protected void onPreExecute() {
Log.e("ASYNC", "PRE EXECUTE");
progress.show();
}
protected void onPostExecute(final List<Article> articles) {
Log.e("ASYNC", "POST EXECUTE");
derniereNewsListFrag.getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
ArticleListAdapter adapter = new ArticleListAdapter(derniereNewsListFrag.getActivity(), articles);
derniereNewsListFrag.setListAdapter(adapter);
adapter.notifyDataSetChanged();
}
});
progress.dismiss();
Crouton.makeText(derniereNewsListFrag.getActivity(), "DD", Style.INFO, ???? ).show();
}
@Override
protected List<Article> doInBackground(String... urls) {
String feed1 = urls[0];
String feed2 = urls[1];
URL url1 = null;
URL url2 = null;
try {
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
XMLReader xr = sp.getXMLReader();
url1 = new URL(feed1);
url2 = new URL(feed2);
RssHandler rh = new RssHandler();
xr.setContentHandler(rh);
xr.parse(new InputSource(url1.openStream()));
Log.d("RssService", "doInBackground : URL2 maintenant utilisée");
xr.setContentHandler(rh);
xr.parse(new InputSource(url2.openStream()));
Log.d("RssService", "doInBackground : PARSING FINISHED");
return rh.getArticleList();
} catch (IOException e) {
Log.e("RSS Handler IO", e.getMessage() + " >> " + e.toString());
} catch (SAXException e) {
Log.e("RSS Handler SAX", e.toString());
e.printStackTrace();
} catch (ParserConfigurationException e) {
Log.e("RSS Handler Parser Config", e.toString());
}
return null;
}
}
import java.io.IOException;
导入java.net.URL;
导入java.util.List;
导入javax.xml.parsers.parserConfiguration异常;
导入javax.xml.parsers.SAXParser;
导入javax.xml.parsers.SAXParserFactory;
导入org.xml.sax.InputSource;
导入org.xml.sax.SAXException;
导入org.xml.sax.XMLReader;
导入de.keyboardsurfer.android.widget.cruton.cruton;
导入de.keyboardsurfer.android.widget.cruton.Style;
导入android.app.ProgressDialog;
导入android.content.Context;
导入android.os.AsyncTask;
导入android.util.Log;
导入android.view.ViewGroup;
导入android.widget.Adapter;
导入android.widget.AdapterView;
公共类RssService扩展异步任务{
私人进展对话进展;
私人语境;
私人布雷塔涅涅涅夫斯特拉格;
公共RSS服务(BretagneNewsFragment-derniereNewsListFragment){
context=dernierensListFragment.getActivity();
derniereNewsListFrag=derniereNewsListFragment;
进度=新建进度对话框(上下文);
进度。设置消息(“按进度计费…”);
}
受保护的void onPreExecute(){
Log.e(“异步”、“预执行”);
progress.show();
}
受保护的void onPostExecute(最终列表文章){
Log.e(“异步”、“后执行”);
derniereNewsListFrag.getActivity().runOnUiThread(新的Runnable()){
@凌驾
公开募捐{
ArticleListAdapter=新的ArticleListAdapter(derniereNewsListFrag.getActivity(),articles);
DersListFrag.setListAdapter(适配器);
adapter.notifyDataSetChanged();
}
});
进步。解散();
Crouton.makeText(derniereNewsListFrag.getActivity(),“DD”,Style.INFO,??).show();
}
@凌驾
受保护列表doInBackground(字符串…URL){
字符串feed1=URL[0];
字符串feed2=URL[1];
URL url1=null;
URL url2=null;
试一试{
SAXParserFactory spf=SAXParserFactory.newInstance();
SAXParser sp=spf.newSAXParser();
XMLReader xr=sp.getXMLReader();
url1=新URL(feed1);
url2=新URL(feed2);
RssHandler rh=新的RssHandler();
xr.setContentHandler(右侧);
xr.parse(新输入源(url1.openStream());
日志d(“RssService”、“doInBackground:URL2主租户利用率”);
xr.setContentHandler(右侧);
parse(新的InputSource(url2.openStream());
d(“RssService”,“doInBackground:解析完成”);
返回rh.getArticleList();
}捕获(IOE异常){
Log.e(“RSS处理程序IO”,e.getMessage()+“>>”+e.toString());
}捕获(SAXE异常){
e(“RSS处理程序SAX”,e.toString());
e、 printStackTrace();
}捕获(ParserConfiguration异常e){
e(“RSS处理程序解析器配置”,e.toString());
}
返回null;
}
}
下面是我的ArticleListAdapter的代码:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import java.util.Random;
import com.rss.R;
import com.rss.utils.DateUtils;
import android.app.Activity;
import android.graphics.Color;
import android.graphics.Typeface;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.LinearLayout;
import android.widget.TextView;
public class ArticleListAdapter extends ArrayAdapter<Article> {
private ArrayList<String> colorList = new ArrayList<String>();
public ArticleListAdapter(Activity activity, List<Article> articles) {
super(activity, 0, articles);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Activity activity = (Activity) getContext();
LayoutInflater inflater = activity.getLayoutInflater();
View rowView = inflater.inflate(R.layout.fragment_article_list, null);
Article article = getItem(position);
TextView textView = (TextView) rowView.findViewById(R.id.article_title_text);
textView.setText(article.getTitle());
TextView src = (TextView) rowView.findViewById(R.id.article_source);
src.setText(article.getSource());
if (article.getSource().equals(" LE TELEGRAMME ")) {
src.setBackgroundColor(Color.parseColor("#D91E00"));
} else if (article.getSource().equals(" OUEST FRANCE ")) {
src.setBackgroundColor(Color.parseColor("#FFFFFF"));
src.setTextColor(Color.parseColor("#EB030C"));
src.setTypeface(null, Typeface.BOLD);
} else {
Log.d("INFO", "SPECIAL CASE !!!");
}
TextView dateView = (TextView) rowView.findViewById(R.id.article_listing_smallprint);
String pubDate = article.getPubDate();
TextView descriptionView = (TextView) rowView.findViewById(R.id.article_title_description);
String completeString = article.getDescription();
String[] strArray = completeString.split("<img");
String result = strArray [0];
// Permet de mettre une chaine dans la cas ou nous n'avons pas de description.
if (result == null || result.trim().equals("")){
descriptionView.setText("Cet article ne contient pas de description supplémentaire.");
} else {
String firstLetterDesc = result.substring(0,1);
if (firstLetterDesc.equals(" ")) {
String resultToSet = changeCharInPosition(0, '\0', result);
descriptionView.setText(resultToSet);
} else {
descriptionView.setText(result);
}
}
TextView premiereLettre = (TextView) rowView.findViewById(R.id.premiere_lettre);
String titleTmp = article.getTitle();
String firstLetter = titleTmp.substring(0,1);
premiereLettre.setText(firstLetter.toUpperCase());
SimpleDateFormat df = new SimpleDateFormat("EEE, dd MMM yyyy kk:mm:ss Z", Locale.ENGLISH);
Date pDate;
try {
pDate = df.parse(pubDate);
pubDate = " IL Y A " + DateUtils.getDateDifference(pDate);
} catch (ParseException e) {
Log.e("DATE PARSING", "Error parsing date..");
pubDate = "published by " + article.getAuthor();
}
dateView.setText(pubDate);
// Change color of the background of first Letter
LinearLayout rl = (LinearLayout) rowView.findViewById(R.id.color_letter);
String codeCouleur = getRandomColorFromList();
rl.setBackgroundColor(Color.parseColor(codeCouleur));
return rowView;
}
public String changeCharInPosition(int position, char ch, String str){
char[] charArray = str.toCharArray();
charArray[position] = ch;
return new String(charArray);
}
}
import java.text.ParseException;
导入java.text.simpleDataFormat;
导入java.util.ArrayList;
导入java.util.Date;
导入java.util.List;
导入java.util.Locale;
导入java.util.Random;
导入com.rss.R;
导入com.rss.utils.DateUtils;
导入android.app.Activity;
导入android.graphics.Color;
导入android.graphics.Typeface;
导入android.util.Log;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.widget.ArrayAdapter;
导入android.widget.LinearLayout;
导入android.widget.TextView;
公共类ArticleListAdapter扩展了ArrayAdapter{
private ArrayList colorList=new ArrayList();
public ArticleListAdapter(活动,列出项目){
超级(活动,0,文章);
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
活动活动=(活动)getContext();
LayoutInflater充气器=活动。getLayoutInflater();
视图行视图=充气机。充气(R.layout.fragment\u article\u list,null);
Article=getItem(位置);
TextView TextView=(TextView)rowView.findViewById(R.id.article\u title\u text);
textView.setText(article.getTitle());
TextView src=(TextView)rowView.findviewbyd(R.id.article\u source);
src.setText(article.getSource());
if(article.getSource()等于(“LE telegrame”)){
src.setBackgroundColor(Color.parseColor(#D91E00”);
}else if(article.getSource().equals(“OUEST FRANCE”)){
src.setBackgroundColor(Color.parseColor(“#FFFFFF”));
src.setTextColor(Color.parseColor(#EB030C));
src.setTypeface(null,Typeface.BOLD);
}否则{
Log.d(“信息”,“特殊情况!!!”);
}
TextView dateView=(TextView)rowView.findViewById(R.id.article\u listing\u smallprint);
字符串pubDate=article.getPubDate();
TextView descriptionView=(TextView)rowView.findViewById(R.id.article\u title\u description);
String completeString=article.getDescription();
String[]strArray=completeString.split(“要显示一个面包块,您需要做的就是引用您的活动,而您确实有
Crouton.makeText(derniereNewsListFrag.getActivity(), "DD", Style.INFO, ???? ).show();
可以替换为
Crouton.makeText(derniereNewsListFrag.getActivity(), "DD", Style.INFO, (ViewGroup) derniereNewsListFrag.getView()).show();
或
但是请注意,即使您的片段不可用,您的服务基本上也可以运行
Crouton.showText(derniereNewsListFrag.getActivity(), "DD", Style.INFO, (ViewGroup) derniereNewsListFrag.getView());