按钮不会重定向到活动,而是会导致应用崩溃

时间:2018-07-14 10:05:16

标签: android xml button android-activity

我的按钮没有打开新活动,而是使应用程序崩溃。我什至从 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" />

3 个答案:

答案 0 :(得分:1)

您的代码很好!

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

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

重新运行代码,然后重试。这次最有可能工作。

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

答案 1 :(得分:0)

放置以下代码段:

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" />

这可能对您有帮助

答案 2 :(得分:0)

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

因此请确保也将其显示

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

始终对类使用PascalCase,对方法始终使用camelCase