当前位置: 首页 > 知识库问答 >
问题:

应用不幸关闭但没有代码错误-Java android[副本]

李良策
2023-03-14

伙计们,我是一个新的android编程,我正在尝试使登录应用程序连接到本地主机mysql与android studio基于这个网站。下面是代码:

mainactivity.java

public class Mainmenu extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_mainmenu);

    Button login=(Button)findViewById(R.id.login);
    login.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent login=new Intent(v.getContext(),Login.class);
            startActivity(login);
        }
    });

    Button register=(Button)findViewById(R.id.register);
    register.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent  regis= new Intent(v.getContext(),Register.class);
            startActivity(regis);
        }
    });

    Button exit=(Button)findViewById(R.id.exit);
    exit.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            finish();

        }
    });
}

login.java

public class Login extends ActionBarActivity {
        final EditText id=(EditText)findViewById(R.id.handphone);
        final EditText pass=(EditText)findViewById(R.id.pass_login);
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_login);

        TextView login=(TextView)findViewById(R.id.textView);
        login.setText("Login to Human Tracker");

        Button log=(Button)findViewById(R.id.login);
        log.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String password=pass.getText().toString();
                String handphone=id.getText().toString();

                if (!password.equals("") && !handphone.equals("")) {
                    Toast.makeText(getApplication(),"Your id or password is wrong",Toast.LENGTH_SHORT).show();

                } else {
                    masuk();
                    Toast.makeText(getApplication(),"Welcome", Toast.LENGTH_SHORT).show();
                    Intent user = new Intent(v.getContext(), User.class);
                    startActivity(user);

                }
            }
        });
    }

    private void masuk(){

    SharedPreferences prefs;
    String prefName ="report";

    InputStream is=null;
    String result=null;
    String line=null;
    JSONObject jArray= null;
    ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
    nameValuePairs.add(new BasicNameValuePair("hp",id.getText().toString()));

    try {
        HttpClient httpclient=new DefaultHttpClient();
        HttpPost httppost=new HttpPost("http://10.0.0.2");
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
        HttpResponse response = httpclient.execute(httppost);
        HttpEntity entity=response.getEntity();
        is=entity.getContent();
    } catch (Exception e){
        Log.e("Fail 1: Error in HTTP connection",e.toString());
        Toast.makeText(getApplicationContext(),"Fail 1: Error in HTTP connection",Toast.LENGTH_SHORT).show();
    }

    try {
        BufferedReader reader = new BufferedReader(new InputStreamReader(
                is, "iso-8859-1"), 8);
        StringBuilder sb = new StringBuilder();
        while ((line = reader.readLine()) != null) {
            sb.append(line + "\n");
        }
        is.close();
        result = sb.toString();
    } catch (Exception e) {
        Log.e("Fail 2: Error converting result ", e.toString());
    }

    try
    {
        JSONObject jobject = new JSONObject(result);

        String S_pwd = jobject.getString("pass");
        String S_name = jobject.getString("name");
        String S_id = jobject.getString("id");

        if(S_pwd.equals(pass.getText().toString())) {

            Toast.makeText(getBaseContext(), "Login Successfully",
                    Toast.LENGTH_SHORT).show();

            prefs = getSharedPreferences(prefName, MODE_PRIVATE);
            SharedPreferences.Editor editor = prefs.edit();

            //---save the values in the EditText view to preferences---
            editor.putString("id", S_id);
            editor.putString("name", S_name);

            //---saves the values---
            editor.commit();

            Toast.makeText(getApplicationContext(),"Login success",Toast.LENGTH_SHORT).show();
            }

        else {
            Toast.makeText(getBaseContext(), "Login Failure \n" +
                    "\n Try Again", Toast.LENGTH_LONG).show();

            id.setText("");
            pass.setText("");
        }
    }
    catch(Exception e)
    {
        Log.e("Fail 3", e.toString());
    }
}

一切正常,我可以在添加private void masuk之前转到user.java。然后我调试我的应用程序,没有错误。但是为什么当我按下主菜单上的login按钮(转到login.java)时,它会说‘不幸的是login已经停止了’?

共有1个答案

莫欣悦
2023-03-14

这将不起作用:

public class Login extends ActionBarActivity {
        final EditText id=(EditText)findViewById(R.id.handphone);
        final EditText pass=(EditText)findViewById(R.id.pass_login);

首先调用setcontentview。然后分配Gui元素:

 protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        EditText id=(EditText)findViewById(R.id.handphone);
        EditText pass=(EditText)findViewById(R.id.pass_login);

或者如果您需要它们作为类成员:

 EditText id;
 EditText pass;

 protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        id=(EditText)findViewById(R.id.handphone);
        pass=(EditText)findViewById(R.id.pass_login);
 类似资料:
  • 当我从一个表单移动到另一个表单时,应用程序关闭了,我得到了错误“application close不幸地”,并在日志文件“java.lang.NullPointerException”中得到了下面的错误:尝试在一个空对象引用上调用虚拟方法'void com.codename1.impl.Android.InplaceEditView$editView.switchtotextarea(com.co

  • 我是Java新手,最近我学习类和对象主题。但是,我无法继续执行此代码: 在主要方法上,我得到了学生的错误,但没有得到老师的错误。我不知道我是否犯了什么错误,或者我看不见。必须做什么? 我得到的错误是: 未使用局部变量学生的值 没有类研究类型的封闭实例是可访问的。必须用类研究类型的封闭实例来限定分配(例如x.newA(),其中x是类研究的实例)。 换行断点:ClassResearch[line: 4

  • 上面这一行正在生成错误“invlaid escape sequence”。所以我把它改成: 现在我得到了错误“参数fileAttachment的非法修饰符”。 那么如何修复这个错误呢?

  • 我试图把我单独的Java文件在1类。它看起来像这样。 但是我遇到了一个错误 "异常在线程"main"java.lang.错误:未解决的编译问题:没有封闭的实例类型oneClass是可访问的。必须用问题2类型的封闭实例来限定分配(例如x.newA()其中x是问题2的实例)。 发生什么事?

  • 这段代码给了我一个错误:在'void'void num(int a)plz explain之前需要初始化器

  • 我有以下代码