1

みなさんこんにちは、お役に立てれば幸いです。

ListView に入力する RSS リーダーを作成しました。アプリの起動時にユーザーがネットワークにアクセスできることを確認したいのですが、ネットワークがない場合、ユーザーには setEmptyView ビューとトーストが表示されます。

onCreate では、リスト アダプターに空のリストを設定したので、空のビューが表示されることを期待しています。次に、ネットワークの状態を照会し、ネットワークがない場合はトーストを作成します。しかし、起動時に空のビューが表示されることはなく、ネットワークがない場合はトーストも表示されません。どうしたの?

public class XMLActivity extends ListActivity {

private List<JSONObject> jobs = new ArrayList<JSONObject>();
private RssListAdapter adapter;
private ListView lv;


public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

//SET LAYOUT WITH EMPTY LIST VIEW 
    setContentView(R.layout.main);
    View empty = findViewById(R.id.empty);
    lv = getListView();               //get view layout
    lv.setEmptyView(empty);                   //set empty view
    adapter = new RssListAdapter(this,jobs);  //jobs is empty array list
    setListAdapter(adapter);

//CHECK FOR NETWORK AND DISPLAY TOAST
    try{
        boolean network = RssReader.isOnline(this); //check network state
        if (!network){
            Toast toast = Toast.makeText(XMLActivity.this, "No Network Access", Toast.LENGTH_LONG);
            toast.show();
        }
    }catch (Exception e){
            Toast toast = Toast.makeText(XMLActivity.this, "No Network Access", Toast.LENGTH_LONG);
            toast.show();
    }

// START RSS READER HANDLER
    try {
        jobs = RssReader.getLatestRssFeed();

    } catch (Exception e) {

    }
 //REFRESH ADAPTER FOR LISTVIEW
    adapter.clear();
    for(JSONObject job :jobs){
        adapter.add(job);
    }
    adapter.notifyDataSetChanged();
             lv.setClickable(true);

空のビューまたはトーストが表示されないのはなぜですか。この問題は onCreate ルーチンでのみ発生します。その後のトーストと空のビューは、メニュー項目の選択時に正常に表示されるため、onCreate シーケンスに固有の問題のようです。

4

4 に答える 4

0

開発マシンを(まだ)稼働させToast.makeToast(this, "msg to user", Toast.TOAST_MSG_SHORT).show();ていないので、そこにタイプミスがあると確信しています。

于 2012-11-09T14:47:10.010 に答える
0

カバーされていない条件が 1 つあります。 network==の場合はどうなりtrueますか?

 try{
        boolean network = RssReader.isOnline(this); //check network state
        if (!network){
            Toast toast = Toast.makeText(XMLActivity.this, "No Network Access", Toast.LENGTH_LONG);
            toast.show();
        }
        else {
            Toast toast = Toast.makeText(XMLActivity.this, "Network Access!", Toast.LENGTH_LONG);
            toast.show();
        }
    }catch (Exception e){
            Toast toast = Toast.makeText(XMLActivity.this, "No Network Access", Toast.LENGTH_LONG);
            toast.show();
    }
于 2012-11-11T15:32:39.983 に答える
0
if (!network){    
  Toast toast = new Toast(getApplicationContext());
  toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
  toast.setDuration(Toast.LENGTH_LONG);
  TextView txt1 =  new TextView(this);
  txt1.setText("No Network");
  toast.setView(txt1);
  toast.show();
}
else ...

これを試して..、、。

于 2012-11-09T18:25:18.063 に答える
0

使用する :

Toast.makeText(XMLActivity.this , "No Network", Toast.LENGTH_LONG).show();
于 2012-11-09T14:48:41.670 に答える