Java 程序运行时没有错误,但按钮无法打开
我一直在关注youtube上的mybringback教程,并尝试实现我学到的东西。试图在我的主页上找到一个按钮来打开另一个页面。最后程序运行没有错误,但现在当我按下按钮时,什么也没有打开 我的按钮所在的Main.xml文件Java 程序运行时没有错误,但按钮无法打开,java,android,Java,Android,我一直在关注youtube上的mybringback教程,并尝试实现我学到的东西。试图在我的主页上找到一个按钮来打开另一个页面。最后程序运行没有错误,但现在当我按下按钮时,什么也没有打开 我的按钮所在的Main.xml文件 <Button android:id="@+id/btnChpt3" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layo
<Button
android:id="@+id/btnChpt3"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:text="Appearance and Grooming Policies"
android:textSize="18sp"
android:textStyle="bold|italic"
android:gravity="center"
/>
}
还有我的舱单
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.th3ramr0d.learnar670_1"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="21" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".Menu"
android:label="@string/app_name" >
<intent-filter>
<action android:name="com.th3ramr0d.learnar670_1.MENU" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name=".Chapter3"
android:label="@string/app_name" >
<intent-filter>
<action android:name="com.th3ramr0d.learnar670_1.CHAPTER3" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
</manifest>
这是我的MainActivity.java
package com.th3ramr0d.learnar670_1;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@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;
}
@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();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
实际上,您可以尝试一种更方便的方法来启动应用程序内部的活动:
startActivity(新意图(Menu.this,第3章类))
此外,您还可以在此处了解其工作原理:
早安
尝试替换该行:
startActivity(new Intent("com.th3ramr0d.learnar670_1.CHAPTER3"));
代码如下:
Intent intent = new Intent(Menu.this, Chapter3.class);
startActivity(intent);
尝试将代码还原为原始代码,复制布局活动_main.xml并将其重命名为menu.xml
现在在layout menu.xml中更改以下行:
android:text="Appearance and Grooming Policies"
致:
android:text=“转到菜单”
这句话:
android:id="@+id/btnChpt3"
与:
android:id="@+id/btnMenu"
并替换该行:
setContentView(R.layout.activity_main);
在Menu.java中,使用:
setContentView(R.layout.menu.xml)
最后,在MainActivity.java中,将以下内容添加到oncreate方法中:
按钮btnGoToMenu=(按钮)findViewById(R.id.btnMenu)
btnGoToMenu.setOnClickListener(新视图.OnClickListener(){
}))
然后重新运行应用程序。复制此文件并粘贴到您的
AndroidManifest
中,然后重试
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.th3ramr0d.learnar670_1"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="21" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".Menu"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".Chapter3"
android:label="@string/app_name" >
<intent-filter>
<action android:name="com.th3ramr0d.learnar670_1.CHAPTER3" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
</manifest>
为了帮助你理解这个问题
<category android:name="android.intent.category.LAUNCHER" />
AndroidManifest
中的上述代码定义了按下应用程序图标时要启动的活动。根据您之前的清单,它会启动activitymain activity
,这也会设置它setContentView(R.layout.activity\u main)默认情况下,IDE会创建一个Hello World
程序
因此,当您启动应用程序时,它的main活动
(看起来与您设计的布局相同)正在加载,而不是您想要加载的菜单
活动。因此,我们在清单中声明菜单
活动的地方做了一些更改,因为启动器现在启动了菜单
活动,其中包含处理按钮单击的代码片段
我希望这有帮助 您的菜单
代码是否正在执行?我看到你有activity\u main
布局,而不是activity\u菜单
-你可能有activity\u main
也显示在你的主活动中,并且没有点击监听器。对不起,我不知道这件事。你能把你的话给我解释一下吗?看看你的清单
,首先启动的活动是你的main活动
。你能在那里点击一个按钮吗?您能用该代码更新问题吗?您能确认按钮位于Main.xml
或activity\u Main.xml
中吗?在您提出的问题中,它提到了Main.xml
,如果没有用,请尝试删除它,但效果仍然相同。没有打开任何内容。我想您是否正确进入菜单活动?你能发布你的Chaper3.java类以便我们可以看到代码吗?我还假设应用程序没有崩溃?正确。它不会崩溃。没有给出任何错误。当我按下按钮时,它没有任何作用。我的目的是向您展示不同的布局如何链接到不同的活动,以及命名约定如何帮助您避免这里遇到的一些混乱。还有+1到codePG,这是一个很好的答案。我理解你的意思,这很有帮助。但是,该代码仍然不起作用。现在,当我在手机和nexus 7上运行它时,程序永远不会出现,图标也永远不会显示,我无法启动它。我可以看到它在设置/应用程序中运行,但我无法打开该程序。请清理项目,然后再次运行project->clean
,并且可以从项目中删除MainActivity.java
,因为它没有任何用途。正常工作:)发生的事情是我将Menu.java重命名为MainMenu.java,因为我认为莫名其妙地,他是有责任的。因此,我编辑了您的代码以反映我的类名,但我认为它在android:name=“.Menu”和android.intent.action.MAIN上必须相同,所以我将其更改为android.intent.action.MAIN菜单。不管怎么说我的问题。为什么android.intent.action.MAIN的扩展必须是MAIN?我想我还没有完全理解这一部分。谢谢。很高兴为你工作。我建议您从youtube slidenerd或smartherd观看一些教程。他们帮了我很多。
// @Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, Menu.class);
startActivity(intent);
}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.th3ramr0d.learnar670_1"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="21" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".Menu"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".Chapter3"
android:label="@string/app_name" >
<intent-filter>
<action android:name="com.th3ramr0d.learnar670_1.CHAPTER3" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
</manifest>
<category android:name="android.intent.category.LAUNCHER" />