【问题标题】:Button doesn't redirect to activity but crashes app instead按钮不会重定向到活动,而是使应用程序崩溃
【发布时间】:2018-12-22 13:26:24
【问题描述】:

我的按钮没有打开新的活动,应用程序崩溃了。我什至从 http://www.androidbegin.com/tutorial/android-button-click-new-activity-example/ 复制了源代码并尝试自己运行它,但应用程序仍然崩溃。我似乎找不到问题。

public class MainActivity extends Activity {
Button button;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // Get the view from activity_main.xml
    setContentView(R.layout.activity_main);

    // Locate the button in activity_main.xml
    button = (Button) findViewById(R.id.MyButton);

    // Capture button clicks
    button.setOnClickListener(new OnClickListener() {
        public void onClick(View arg0) {

            // Start NewActivity.class
            Intent myIntent = new Intent(MainActivity.this,
                    secondActivity.class);
            startActivity(myIntent);
        }
    });
}

}

XML 按钮

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<Button
    android:id="@+id/MyButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:text="Button" />

【问题讨论】:

  • 你在 Manifest 中添加了你的 secondActivity 吗?如果是的话,你能分享一下logcat吗
  • 请在此处发布崩溃日志,错误显示是什么?
  • 天啊,我没有意识到我没有在清单中包含第二个活动。谢谢

标签: android xml button android-activity


【解决方案1】:

您的代码没问题!

此行为最可能的原因是 secondActivity 未在您的清单中注册。检查是否是,然后重试。如果不是,您只需在manifest.xml 文件的application 标记内添加以下行即可注册它。

<activity android:name=".secondActivity" />

重新运行您的代码并重试。这次很可能会成功。

我希望这会有所帮助.. 编码愉快!

【讨论】:

    【解决方案2】:

    根据您提供的教程链接,第二个活动的名称是 NewActivity.class。在您的代码中,您似乎将其修改为 secondActivity.class。

    所以请确保也显示它

     <activity android:name=".secondActivity" >
            </activity>
    

    并且总是对类使用 PascalCase,对方法使用 camelCase

    【讨论】:

      【解决方案3】:

      把这个代码sn-p:

      public class MainActivity extends Activity {
          Button button;
      
          @Override
          public void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              // Get the view from activity_main.xml
              setContentView(R.layout.activity_main);
      
              // Locate the button in activity_main.xml
              button = (Button) findViewById(R.id.MyButton);
      
              // Capture button clicks
              button.setOnClickListener(new View.OnClickListener() {
                  public void onClick(View arg0) {
      
                      // Start NewActivity.class
                      Intent myIntent = new Intent(MainActivity.this,
                              secondActivity.class);
                      startActivity(myIntent);
                  }
              });
          }
      
      }
      

      在 manifest.xml 中注册 secondActivity

      <activity
                  android:name=".secondActivity"
                  android:label="@string/app_name"
                  android:screenOrientation="portrait"
                  android:windowSoftInputMode="adjustResize" />
      

      这可能对你有帮助

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-04-07
        • 1970-01-01
        • 1970-01-01
        • 2017-11-09
        • 1970-01-01
        • 2019-01-30
        • 1970-01-01
        相关资源
        最近更新 更多