0

Detail クラスがバックグラウンドでオンになっているときにリストビューの任意の項目を押すと、ProgressDialog を表示したいのですが、asyncTask を使用する必要があることはわかっていますが、方法がわかりません。

これは、ProgressDialog を表示するために行った私のフラグメントです

public class FeedPlayerIndexFragment extends SherlockFragment{     
String url="http://www.toto.com/index.php?format=feed&type=rss";
ArrayList<Article> feeds ;
AndroidSaxFeedParser feedParser= new AndroidSaxFeedParser(url);
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    feeds=feedParser.parse();
    View view=inflater.inflate(R.layout.main, container, false);
    CustomItemAdapter_News lfa = new   CustomItemAdapter_News(getActivity().getApplicationContext(), feeds);
    ((ListView)view.findViewById(R.id.listFeed)).setAdapter(lfa);

    ((ListView)view.findViewById(R.id.listFeed)).setOnItemClickListener(new  OnItemClickListener() {
        public void onItemClick(AdapterView<?> arg0, View v, int  position,long id) {
            Bundle b = new Bundle();
            b.putInt("position", position);
            b.putString("url", url);
            Intent intent=new   Intent(getActivity().getApplicationContext(), DetailActivity.class);
            intent.putExtras(b);
            startActivity(intent);
        }
    });
    return view;
}
} 

これは、バックグラウンドをオンにすることになっている私の詳細アクティビティです

public class DetailActivity extends Activity{
String descriptionFinale = null,imageFinale = null,url;
int position;
TextView description_,titre,date;
ImageView image_;
ArrayList<Article> feeds ;

WebView contentWebView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.detail);
    Bundle b = getIntent().getExtras();
    position=b.getInt("position");
    url=b.getString("url");
    AndroidSaxFeedParser feedParser= new AndroidSaxFeedParser(url);
    feeds=feedParser.parse();


    date=(TextView) findViewById(R.id.date);
    contentWebView= (WebView)findViewById(R.id.contentWebView);
    titre=(TextView) findViewById(R.id.titre);

    date.setText(feeds.get(position).getTitle());
    GetDescriptionWebView.getDescriptionImage(position, feeds,contentWebView);
    titre.setText("Postulé le: "+GetDateFormat.getDate(position, feeds));

}

}
4

2 に答える 2

1

このコードを試すことができます

public class DetailActivity extends Activity
{
    String descriptionFinale = null,imageFinale = null,url;
    int position;
TextView description_,titre,date;
ImageView image_;
ArrayList<Article> feeds ;

WebView contentWebView;


ProgressDialog dialog;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.detail);

    feeds=new Arraylist<Article>;
    contentWebView= (WebView)findViewById(R.id.contentWebView);
    date=(TextView) findViewById(R.id.date);
    titre=(TextView) findViewById(R.id.titre);
    Bundle b = getIntent().getExtras();
    position=b.getInt("position");
    url=b.getString("url");
    AndroidSaxFeedParser feedParser= new AndroidSaxFeedParser(url);


    new MyFetchTask().execute();



}

public class MyFetchTask extends AsyncTask<Object, Object, Object>
{

    @Override
    protected void onPreExecute() {
        // TODO Auto-generated method stub
        super.onPreExecute();

        dialog=ProgressDialog.show(DetailActivity.this, "", "Loading...");

    }


    @Override
    protected Object doInBackground(Object... params) {
        // TODO Auto-generated method stub

        feeds=feedParser.parse();

        return null;
    }

    @Override
    protected void onPostExecute(Object result) {
        // TODO Auto-generated method stub
        super.onPostExecute(result);

        dialod.dismiss();
        date.setText(feeds.get(position).getTitle());
        GetDescriptionWebView.getDescriptionImage(position, feeds,contentWebView);
        titre.setText("Postulé le: "+GetDateFormat.getDate(position, feeds));

    }

}

}
于 2012-10-11T13:36:38.340 に答える
0

これは asynctask の例です これが役立つことを願っています

  class NewCouponsTask extends AsyncTask<String, Void, ArrayList<NewCoupons>>

 {
NewCouponsScreen parentActivity;

public NewCouponsTask(NewCouponsScreen parent) {
    // TODO Auto-generated constructor stub
    parentActivity = parent;
}

@Override
protected void onPreExecute() {
    // TODO Auto-generated method stub
    super.onPreExecute();
}
@Override
protected ArrayList<NewCoupons> doInBackground(String... params) {

    URL url=null;
    ArrayList<NewCoupons> couponslist=null;
    try {
        url = new URL(ApplicationLinks.newCouponsLink);

     InputSource is = new InputSource(url.openStream());
     is.setEncoding("UTF-8");
    SaxFeedParser saxParser = new SaxFeedParser(ApplicationLinks.newCouponsLink);
    Log.e("Error",ApplicationLinks.newCouponsLink);
    couponslist=saxParser.parse();  
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return couponslist;
}

@Override
protected void onPostExecute(ArrayList<NewCoupons> result) {
    // TODO Auto-generated method stub
    parentActivity.fetchNewCoupons(result);
        }

}

onPreExecute() 関数でプログレスバーをロードし、onPostExecute() 関数で停止できます

于 2012-10-11T13:46:00.653 に答える