0

ログイン ボタンを押したときにサーバーが応答しないときにトースト メッセージを表示する必要があります。いくつかのパラメーターは、サーバーへの URL 接続を使用して AgAppMenu 画面に渡され、AgAppHelperMethods 画面で xml 応答を取得します。問題は、サーバーがビジー状態であるか、ネットワークが利用できない場合です。ログ メッセージは表示されますが、catch ブロックでトースト メッセージを表示できません。

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Intent ;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class LoginScreen extends Activity implements OnClickListener {

EditText mobile;
EditText pin;
Button btnLogin;
Button btnClear;

public void onCreate(Bundle icicle) {
    super.onCreate(icicle);
    setContentView(R.layout.agapplogin);

    TextView lblMobileNo = (TextView) findViewById(R.id.lblMobileNo);
    lblMobileNo.setTextColor(getResources()
            .getColor(R.color.text_color_red));

    mobile = (EditText) findViewById(R.id.txtMobileNo);

    TextView lblPinNo = (TextView) findViewById(R.id.lblPinNo);
    lblPinNo.setTextColor(getResources().getColor(R.color.text_color_red));

    pin = (EditText) findViewById(R.id.txtPinNo);

    btnLogin = (Button) findViewById(R.id.btnLogin);
    btnClear = (Button) findViewById(R.id.btnClear);

    btnLogin.setOnClickListener(new OnClickListener() {
        public void onClick(View view) {
            postLoginData();

        }
    });

    btnClear.setOnClickListener(new OnClickListener() {
        public void onClick(View v)

        {
            cleartext();
        }

    });

    /*
     * 
     * btnClear.setOnClickListener(new OnClickListener() { public void
     * onClick(View arg0) {
     * 
     * } });
     */

}

public void postLoginData()

{

    if (pin.getTextSize() == 0 || mobile.getTextSize() == 0) {

        AlertDialog.Builder altDialog = new AlertDialog.Builder(this);
        altDialog.setMessage("Please Enter Complete Information!");

    } else {
        Intent i = new Intent(this.getApplicationContext(),  AgAppMenu.class);          
        Bundle bundle = new Bundle();
        bundle.putString("mno", mobile.getText().toString());
        bundle.putString("pinno", pin.getText().toString());
        i.putExtras(bundle);
        startActivity(i);
    }
}

@Override
public void onClick(View v) {

}

public void cleartext() {

    {
        pin.setText("");
        mobile.setText("");
    }

}

}


  import android.app.Activity;
  import android.content.Intent;
  import android.os.Bundle;
  import android.view.View;
  import android.view.View.OnClickListener;
  import android.widget.Button;
  import android.widget.TextView;
  import android.widget.Toast;

 public class AgAppMenu extends Activity {

String mno, pinno;

private String[][] xmlRespone;


Button btnMiniStatement;

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.agappmenu);

    mno = getIntent().getExtras().getString("mno");
    pinno = getIntent().getExtras().getString("pinno");

    setTitle("Welcome to the Ag App Menu");

    AgAppHelperMethods agapp =new AgAppHelperMethods();


//  xmlRespone =   AgAppHelperMethods.AgAppXMLParser("AG_IT_App/AgMainServlet?messageType=LOG&pin=" + pinno + "&mobile=" + mno + "&source=" + mno   + "&channel=INTERNET");
    xmlRespone = agapp.AgAppXMLParser("AG_IT_App/AgMainServlet?messageType=LOG&pin="    + pinno + "&mobile=" + mno + "&source=" + mno   + "&channel=INTERNET");







 import java.net.URL;

  import javax.xml.parsers.DocumentBuilder;
  import javax.xml.parsers.DocumentBuilderFactory;

  import org.w3c.dom.Document;
  import org.w3c.dom.Node;
  import org.w3c.dom.NodeList;
  import org.xml.sax.InputSource;

  import android.app.Activity;
  import android.os.Bundle;
  import android.util.Log;
  import android.widget.Toast;
  import android.view.View;
  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;

boolean flag = true;

@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];

        // this "for" loop is used to parse through the
        // XML document and extract all elements and their
        // value, so they can be displayed on the device

        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;

        }// end for
        throw new ArrayIndexOutOfBoundsException();
    }// end try
    // will catch any exception thrown by the XML parser

    catch (Exception e) {
        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);

    }

    // Log.e(LOG_TAG, "CONNECTION ERROR  FUNDAMO SERVER NOT RESPONDING", e);

    return xmlRespone;

}
    `
4

1 に答える 1

0

AgAppHelperMethodsではありませんActivity。このクラスは から派生しましActivityたが、Singleton 管理メソッド ( getInstance()) を作成し、それを自分でインスタンス化しています。これは悪いです。これをしないでください。

通常、Android はアクティビティのインスタンス化を制御します。自分で ( を使用して) 作成することはありませんnew

AgAppHelperMethods私には、通常のJavaクラスである必要があるように見えます。何かから継承する必要はありません。などのライフサイクル メソッドも削除しますonCreate()

トーストにはコンテキストが必要であり、コンテキストでAgAppHelperMethodsはないため、トーストに問題が発生します。これを解決するには、次のようContextにパラメーターとして追加できます。AgAppXMLParser()

public String[][] AgAppXMLParser(Context context, String parUrl) {
     ...
     // Now you can use "context" to create your toast.
}

AgAppXMLParser()fromを呼び出すときはAgAppMenu、コンテキスト パラメーターとして「this」を渡すだけです。

于 2012-07-12T09:43:07.880 に答える