2017-02-12 114 views
0

我试图让这个代码采用了android的工作室,但在模拟器中的应用程序崩溃的工作每次我跑它并显示一个错误,即“应用程序已停止”。我看了看logcat,发现了这个错误。了java.lang.RuntimeException:无法启动活动ComponentInfo:java.lang.ClassCastException:不能转换到android.widget.Button

logcat的:

十二月2日至11日:39:49.826 4852-4852/co5025.example.com.week10 E/AndroidRuntime:致命异常:主 工艺:co5025.example.com.week10,PID: 4852 了java.lang.RuntimeException:无法启动活动ComponentInfo {co5025.example.com.week10/co5025.example.com.week10.MainActivity}:java.lang.ClassCastException:android.support.v7.widget.AppCompatEditText不能转换为android.widget.Button 在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2646) 在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707) 在android.app.ActivityThread.-wrap12(ActivityThread.java) 在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1460) 在android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6077) at java.lang.reflect.Method.invoke(Native Method) at com。 android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:865) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755) 引起:java.lang.ClassCastException:android。支持.v7.widget.AppCompatEditText无法转换为android.widget.Button at co5025.example.com.week10.MainActivity.onCreate(MainActivity.java:42) at android.app.Activity.performCreate(Activity.java:6664 ) 在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118) 在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2599) 在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707) 在android.app.ActivityThread.-wrap12(ActivityThread.java) 在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1460) 在android.os.Handler .dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6077) at java.lang.reflect.Method .invoke(本机方法) 在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:865) 在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)

MainActivity。java的

package co5025.example.com.week10; 

      import android.app.FragmentManager; 
      import android.content.Intent; 
      import android.os.Bundle; 
      import android.support.design.widget.FloatingActionButton; 
      import android.support.design.widget.Snackbar; 
      import android.support.v7.app.AppCompatActivity; 
      import android.support.v7.widget.Toolbar; 
      import android.view.Menu; 
      import android.view.MenuItem; 
      import android.view.View; 
      import android.widget.Button; 
      import android.widget.EditText; 
      import android.widget.TextView; 
      import android.support.v4.app.FragmentManager.BackStackEntry; 

      public class MainActivity extends AppCompatActivity implements View.OnClickListener { 
       EditText editUsername; 
       EditText editPassword; 
       TextView errorMessage; 
       Button butLogin; 
       private FragmentManager.BackStackEntry v; 

       @Override 
       protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.activity_main); 
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
        setSupportActionBar(toolbar); 

        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
        fab.setOnClickListener(new View.OnClickListener() { 
         @Override 
         public void onClick(View view) { 
          Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) 
            .setAction("Action", null).show(); 
         } 
        }); 
        editPassword = (EditText) findViewById(R.id.edit_password); 
        editUsername = (EditText) findViewById(R.id.edit_username); 
        butLogin = (Button) findViewById(R.id.edit_username); 
        butLogin.setOnClickListener(this); 

        if (getIntent().getBooleanExtra("EXIT", false)) finish(); 
       } 

       @Override 
       public void onClick(View view) { 
        if (checkPassword()) { 
         Intent i; 
         switch (v.getId()) { 
          case R.id.but_login: 
           i = new Intent(this, GameActivity.class); 
           startActivity(i); 
           break; 
         } 
        }else{ 
         errorMessage = (TextView) findViewById(R.id.error_message); 
         errorMessage.setText("Error: Incorrect Password/Username. Try again!"); 
        } 
       } 

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

       @Override 
       public boolean onOptionsItemSelected(MenuItem item) { 
        // Handle action bar item clicks here. The action bar will 
        // automatically handle clicks on the Home/Up button, so long 
        // as you specify a parent activity in AndroidManifest.xml. 
        int id = item.getItemId(); 

        //noinspection SimplifiableIfStatement 
        if (id == R.id.action_settings) { 
         return true; 
        } 

        return super.onOptionsItemSelected(item); 
       } 

       public boolean checkPassword(){ 
        if (editUsername.getText().toString().equals("test") && 
          (editPassword.getText().toString().equals("1234"))) 
         return true; 
        else 
         return false; 
       } 
      } 

回答

0

堆栈跟踪告诉你什么是错的:AppCompatEditText cannot be cast to android.widget.Button - 在findByViewId你使用的按钮是一个EditText

这些都是相同的:

editUsername =(EditText) findViewById(R.id.edit_username);
butLogin = (Button) findViewById(R.id.edit_username);

  • 更改/点th ËButton从你的XML布局
+0

它仍然这样做,但我点击按钮后。 – 1621656

+0

是的,它会基于你提供的代码是问题... –

0

根据这个正确的id: java.lang.ClassCastException:android.support.v7.widget.AppCompatEditText不能转换到android.widget.Button在android.app

您铸造按钮butLogin您的EditText

editUsername =(EditText上)findViewById(R.id.edit_username); butLogin =(Button)findViewById(R.id.edit_username);

在这里,你是相同的编号,以编辑用户名和但登录

相关问题