简体   繁体   English

Eclipse Android SDK中的Android崩溃

[英]Android crash in eclipse android SDK

I'm beginner in android developement. 我是android开发的新手。 And i have a problem with my code. 我的代码有问题。 The application is totally crashed. 该应用程序完全崩溃。 It is Java error in main. 主要是Java错误。

MainActivity.java: MainActivity.java:

package hu.cgkni6.uniobuda.testapplication;

import hu.cgkni6.uniobuda.testapplication.R;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;


public class MainActivity extends Activity {

    final String username = "diak";
    final String pass = "diak";
    Button okbutton = (Button) findViewById(R.id.btn_OK);
    Button cancelbutton = (Button) findViewById(R.id.btn_Cancel);
    final EditText usrname = (EditText) findViewById(R.id.editText1);
    final EditText passwd = (EditText) findViewById(R.id.editText2);





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

        okbutton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                if (usrname.getText().toString().equals(username))
                {
                    if (passwd.getText().toString().equals(pass))
                    {
                        String text2 = "Success!";
                        Toast.makeText(MainActivity.this, text2, Toast.LENGTH_LONG).show();

                    }
                    else {
                        Toast.makeText(MainActivity.this, "Invalid Password", Toast.LENGTH_LONG).show();
                    }
                }
                else {
                    Toast.makeText(MainActivity.this, "Invalid username", Toast.LENGTH_LONG).show();
                }
            }
        });

        cancelbutton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                finish();
            }
        });

    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}

Activity_main.xml: Activity_main.xml:

<LinearLayout android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" xmlns:android="http://schemas.android.com/apk/res/android"
    android:background="#45B7FA" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="15dp"
        android:layout_marginTop="15dp"
        android:gravity="center_horizontal"
        android:textColor="#FFFFFF"
        android:textSize="30sp"
        android:text="@string/login_interface" />


    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="right"
        android:orientation="horizontal" >


            <TextView
                android:id="@+id/textView1"
                android:layout_width="100dp"
                android:layout_height="wrap_content"
                android:text="@string/username"
                android:textAppearance="?android:attr/textAppearanceMedium" />

            <EditText
                android:id="@+id/editText1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:inputType="textEmailAddress"
                android:hint="@string/username" >

                <requestFocus />
            </EditText>       
         </LinearLayout>


    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="5dp"
        android:gravity="right"
        android:orientation="horizontal" >


            <TextView
                android:id="@+id/textView2"
                android:layout_width="100dp"
                android:layout_height="wrap_content"
                android:text="@string/password"
                android:textAppearance="?android:attr/textAppearanceMedium" />

            <EditText
                android:id="@+id/editText2"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:inputType="textPassword"
                android:hint="@string/password"  >

            </EditText>       
         </LinearLayout>



    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="right"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/btn_OK"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:layout_weight="1"
            android:layout_width="0dp"
            android:layout_height="45dp"
            android:background="#FFFFFF"
            android:textColor="#000000"
            android:textSize="20sp"
            android:text="@string/ok" />
        <Button
            android:id="@+id/btn_Cancel"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:layout_weight="1"
            android:layout_width="0dp"
            android:layout_height="45dp"
            android:background="#FFFFFF"
            android:textColor="#000000"
            android:textSize="20sp"
            android:text="@string/cancel" />
    </LinearLayout>

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent" >

       <TableRow
           android:id="@+id/tableRow1"
           android:layout_width="fill_parent"
           android:layout_height="wrap_content"

           android:layout_alignParentBottom="true"
           android:layout_marginBottom="3dp" >

           <Button
               android:id="@+id/button1"
               android:layout_width="0dp"
               android:layout_height="35dp"
               android:layout_weight="1"
               android:layout_marginLeft="5dp"
               android:background="#FFFFFF"
               android:textColor="#000000"
               android:text="@string/about_us"

 />

           <Button
               android:id="@+id/button2"
               android:layout_width="0dp"
               android:layout_height="35dp"
               android:layout_weight="1"
               android:layout_marginLeft="5dp"
               android:layout_marginRight="5dp"
               android:background="#FFFFFF"
               android:textColor="#000000"
               android:text="@string/contact_us" />

           <Button
               android:id="@+id/button3"
               android:layout_width="0dp"
               android:layout_height="35dp"
               android:layout_weight="1"
               android:layout_marginRight="5dp"
               android:background="#FFFFFF"
               android:textColor="#000000"
               android:text="@string/help" />
       </TableRow>

    </RelativeLayout>

</LinearLayout>

Catlog: 目录:

10-09 09:18:26.244: E/AndroidRuntime(302): FATAL EXCEPTION: main
10-09 09:18:26.244: E/AndroidRuntime(302): java.lang.RuntimeException: Unable to instantiate activity     ComponentInfo{hu.cgkni6.uniobuda.testapplication/hu.cgkni6.uniobuda.testapplication.MainActivity}: java.lang.NullPointerException
10-09 09:18:26.244: E/AndroidRuntime(302):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2585)
10-09 09:18:26.244: E/AndroidRuntime(302):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
10-09 09:18:26.244: E/AndroidRuntime(302):  at android.app.ActivityThread.access$2300(ActivityThread.java:125)
10-09 09:18:26.244: E/AndroidRuntime(302):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
10-09 09:18:26.244: E/AndroidRuntime(302):  at android.os.Handler.dispatchMessage(Handler.java:99)
10-09 09:18:26.244: E/AndroidRuntime(302):  at android.os.Looper.loop(Looper.java:123)
10-09 09:18:26.244: E/AndroidRuntime(302):  at android.app.ActivityThread.main(ActivityThread.java:4627)
10-09 09:18:26.244: E/AndroidRuntime(302):  at java.lang.reflect.Method.invokeNative(Native Method)
10-09 09:18:26.244: E/AndroidRuntime(302):  at java.lang.reflect.Method.invoke(Method.java:521)
10-09 09:18:26.244: E/AndroidRuntime(302):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
10-09 09:18:26.244: E/AndroidRuntime(302):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
10-09 09:18:26.244: E/AndroidRuntime(302):  at dalvik.system.NativeStart.main(Native Method)
10-09 09:18:26.244: E/AndroidRuntime(302): Caused by: java.lang.NullPointerException
10-09 09:18:26.244: E/AndroidRuntime(302):  at android.app.Activity.findViewById(Activity.java:1637)
10-09 09:18:26.244: E/AndroidRuntime(302):  at hu.cgkni6.uniobuda.testapplication.MainActivity.<init>(MainActivity.java:17)
10-09 09:18:26.244: E/AndroidRuntime(302):  at java.lang.Class.newInstanceImpl(Native Method)
10-09 09:18:26.244: E/AndroidRuntime(302):  at java.lang.Class.newInstance(Class.java:1429)
10-09 09:18:26.244: E/AndroidRuntime(302):  at android.app.Instrumentation.newActivity(Instrumentation.java:1021)
10-09 09:18:26.244: E/AndroidRuntime(302):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2577)
10-09 09:18:26.244: E/AndroidRuntime(302):  ... 11 more
Button okbutton = (Button) findViewById(R.id.btn_OK);
Button cancelbutton = (Button) findViewById(R.id.btn_Cancel);
final EditText usrname = (EditText) findViewById(R.id.editText1);
final EditText passwd = (EditText) findViewById(R.id.editText2);

Put this in the oncreate method after setContentView(R.layout.activity_main); 将其放在setContentView(R.layout.activity_main)之后的oncreate方法中; and you should be good. 你应该很好 You cant do it from that location :) 您不能从该位置执行此操作:)

You should initialize your Views after setting the layout in your onCreate() method. onCreate()方法中设置布局后,应初始化View。 You are getting the error because you are trying to access the views before setting the layout that is why the application is not able to find the view's id. 之所以收到此错误,是因为您在设置布局之前尝试访问视图,这就是应用程序无法找到视图ID的原因。

Change your code as below: 如下更改代码:

  @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button okbutton = (Button) findViewById(R.id.btn_OK); Button cancelbutton = (Button) findViewById(R.id.btn_Cancel); final EditText usrname = (EditText) findViewById(R.id.editText1); final EditText passwd = (EditText) findViewById(R.id.editText2); } 

You're trying to find views before your layout is setup. 您正在尝试在设置布局之前查找视图。 Move 移动

Button okbutton = (Button) findViewById(R.id.btn_OK);
Button cancelbutton = (Button) findViewById(R.id.btn_Cancel);
final EditText usrname = (EditText) findViewById(R.id.editText1);
final EditText passwd = (EditText) findViewById(R.id.editText2);

to your onCreate method. 到您的onCreate方法。 Just after your setContentView call. setContentView调用之后。

First of all you should learn Android life cycle you should find your all button and edit text in the oncreate method 首先,您应该学习Android生命周期,应该找到所有按钮并在oncreate方法中编辑文本

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Button okbutton = (Button) findViewById(R.id.btn_OK);
           Button cancelbutton = (Button) findViewById(R.id.btn_Cancel);
          final EditText usrname = (EditText) findViewById(R.id.editText1);
          final EditText passwd = (EditText) findViewById(R.id.editText2);
}   

Initialize you Button and EditText outside the onCreate method like this 像这样在onCreate method之外初始化ButtonEditText

Button okbutton;
Button cancelbutton;
EditText usrname;
EditText passwd;

Then insert this 然后插入

okbutton = (Button) findViewById(R.id.btn_OK);
cancelbutton = (Button) findViewById(R.id.btn_Cancel);
EditText usrname = (EditText) findViewById(R.id.editText1);
EditText passwd = (EditText) findViewById(R.id.editText2);

inside your onCreate method after the setContentView(R.layout.activity_main); setContentView(R.layout.activity_main);之后的onCreate方法中setContentView(R.layout.activity_main);

Hope it helps. 希望能帮助到你。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM