4

Hi ! I'm trying to display a mesage when the network is off or the server is not responding. My messsage is visible in LOG but does not show on screen (is not toasted). I have a sample code which works fine but my code is not.

import android.view.View.OnKeyListener;

public class AgAppHelperMethods  extends Activity  {

    private static final String LOG_TAG = null;
    private static AgAppHelperMethods instance = null;
    public static String varMobileNo;
    public static String varPinNo;

    String[][] xmlRespone = null;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.agapphelpermethods);
    }

    protected AgAppHelperMethods() {}

    public static AgAppHelperMethods getInstance() 
    {
        if(instance == null) 
        {
            instance = new AgAppHelperMethods();
        }
        return instance;
    }

    public static String getUrl () 
    {
        String url = "https://demo.accessgroup.mobi/";
        return url;
    }

    public  String[][] AgAppXMLParser(String parUrl) 
    {       
        String _node,_element;
        String[][] xmlRespone = null;
        try {
            String url = AgAppHelperMethods.getUrl() + parUrl;
            URL finalUrl = new URL(url);

            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
            DocumentBuilder db = dbf.newDocumentBuilder();
            Document doc = db.parse(new InputSource(finalUrl.openStream()));
            doc.getDocumentElement().normalize();

            NodeList list=doc.getElementsByTagName("*");
            _node=new String();
            _element = new String();
            xmlRespone = new String[list.getLength()][2];

            for (int i=0;i<list.getLength();i++)
            {
                Node value=list.item(i).      getChildNodes().item(0);
                _node=list.item(i).getNodeName();
                _element=value.getNodeValue();
                xmlRespone[i][0] = _node;
                xmlRespone[i][1] = _element;
            }
        }
        catch (Exception e)
        {
            Toast.makeText(getApplicationContext(), "error  server not responding " + e.getMessage(),
                Toast.LENGTH_SHORT).show();
            Log.e(LOG_TAG, "CONNECTION ERROR  FUNDAMO SERVER NOT RESPONDING", e);
        }
    }
}

How can I show my toast message on the screen? Thanks.

4

7 に答える 7

2

そんなことはできません。このようなことができます

boolean flag=true;//take globally

//working thread
.
.
.

  catch (Exception e)
  {
    flag=false;
    Log.e(LOG_TAG, "CONNECTION ERROR  FUNDAMO SERVER NOT RESPONDING", e);
  } 

作業中のスレッドが終了したら、フラグの値を確認してトーストを表示します。

//Main Thread
 if(!flag)
 Toast.makeText(getApplicationContext(), "error  server not responding " + e.getMessage(),
                Toast.LENGTH_SHORT).show();

注:それでもNonUIスレッドで表示したい場合は、Handlerまたはを使用できますrunOnUiThread()

于 2012-07-12T06:51:16.823 に答える
1

これを試して

Toast.makeText(AgAppHelperMethods.this, "error  server not responding " + e.getMessage(),
                Toast.LENGTH_SHORT).show();
   Log.e(LOG_TAG, "CONNECTION ERROR  FUNDAMO SERVER NOT RESPONDING", e);
于 2012-07-12T07:00:59.017 に答える
0

正しいコンテキストを渡すようにしてください。次に例を示します。

Toast.makeText(MyActivity.this , "error  server not responding " + e.getMessage(),
                Toast.LENGTH_SHORT).show();
于 2012-07-12T06:56:57.743 に答える
0

これがまだ答えられていないことに驚いています。UI スレッドで Toast を実行するだけでよいようです。したがって、キャッチブロックで:

runOnUiThread(new Runnable(){
    Toast.makeText(...);
});
于 2012-09-24T14:31:01.330 に答える
0

誰かがまだ助けを必要としている場合、この方法は私のために働いています:

 getActivity().runOnUiThread(Runnable { Toast.makeText(getApplicationContext(), "Error", Toast.LENGTH_LONG).show() })
于 2018-06-28T11:37:42.753 に答える
-1

これがうまく機能していることを確認してください

@Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_location_finder);

        show();             
    }

    public void show()
    {
         try
         {
            throw new ArrayIndexOutOfBoundsException() ;
         }

         catch(Exception e)
         {
            Toast.makeText(getApplicationContext(), "HI", Toast.LENGTH_LONG).show();
         }
    }
}
于 2012-07-12T07:04:43.970 に答える