当我点击activity_main.xml底部的按钮时,我试图将我的应用程序转到activity_vehicle.xml。当我点击它时,应用程序崩溃,我的日志文件中有很多垃圾。我用android sdk插件运行eclipse。作为旁注,当我尝试在文本字段中键入文本时,用日语表示,屏幕表现得像是转过头而不是直接站起来。
以下是从按钮所在的activity_main.xml中获取的按钮代码
<Button
android:id="@+id/destination_next_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_marginBottom="22dp"
android:layout_marginRight="37dp"
android:text="Next" />
这是我的android清单类,我宣布了第二个活动
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.google.android.gms"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="18" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.google.android.gms.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="com.google.android.gms.Vehicle"
android:label="@string/title_activity_vehicle" >
<action android:name="com.google.android.gms.Vehicle" />
<category android:name="android.intent.category.DEFAULT" />
</activity>
</application>
这是我的MainActivity.java文件,我为该按钮设置了onclick监听器。我假设新的启动活动将使用我拥有的Vechicle.java文件而不是activity_vehicle.xml文件
public class MainActivity extends Activity implements OnClickListener
{
Button destination_next_button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
destination_next_button = (Button)findViewById(R.id.destination_next_button);
destination_next_button.setOnClickListener(this);
}
@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;
}
private void destination_next_buttonClick()
{
startActivity(new Intent("com.google.android.gms.Vehicle"));
}
@Override
public void onClick(View v) {
switch (v.getId())
{
case R.id.destination_next_button:
destination_next_buttonClick();
break;
}
}
}
当项目运行时,LogCat中弹出以下错误我删除了日期,以确保没有多少人占用超过1行
D/AndroidRuntime(428): Shutting down VM
W/dalvikvm(428): threadid=1: thread exiting with uncaught exception (group=0x40014760)
E/AndroidRuntime(428): FATAL EXCEPTION: main
E/AndroidRuntime(428): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=com.google.android.gms.Vehicle }
E/AndroidRuntime(428): at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1508)
E/AndroidRuntime(428): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1382)
E/AndroidRuntime(428): at android.app.Activity.startActivityForResult(Activity.java:3044)
E/AndroidRuntime(428): at android.app.Activity.startActivity(Activity.java:3150)
E/AndroidRuntime(428): at com.google.android.gms.MainActivity.destination_next_buttonClick(MainActivity.java:34)
E/AndroidRuntime(428): at bsu.edu.cs222.gascalculator.MainActivity.onClick(MainActivity.java:42)
E/AndroidRuntime(428): at android.view.View.performClick(View.java:3100)
E/AndroidRuntime(428): at android.view.View$PerformClick.run(View.java:11644)
E/AndroidRuntime(428): at android.os.Handler.handleCallback(Handler.java:587)
E/AndroidRuntime(428): at android.os.Handler.dispatchMessage(Handler.java:92)
E/AndroidRuntime(428): at android.os.Looper.loop(Looper.java:126)
E/AndroidRuntime(428): at android.app.ActivityThread.main(ActivityThread.java:3997)
E/AndroidRuntime(428): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(428): at java.lang.reflect.Method.invoke(Method.java:491)
E/AndroidRuntime(428): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
E/AndroidRuntime(428): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
E/AndroidRuntime(428): at dalvik.system.NativeStart.main(Native Method)
答案 0 :(得分:1)
更改此
startActivity(new Intent("com.google.android.gms.Vehicle"));
到
startActivity(new Intent(MainActivity.this,Vehicle.class));
您可以在匿名内部类中使用MainActivity.this,因为在这种情况下,这不是有效的上下文。
java.lang.Object
↳ android.content.Context // see this
↳ android.content.ContextWrapper
↳ android.view.ContextThemeWrapper
↳ android.app.Activity //see this
您的MainActivity extends Activtiy
或
startActivity(new Intent(this,Vehicle.class));
this
指的是活动背景。
更改此
<activity
android:name="com.google.android.gms.Vehicle"
android:label="@string/title_activity_vehicle" >
<action android:name="com.google.android.gms.Vehicle" />
<category android:name="android.intent.category.DEFAULT" />
</activity>
到
<activity
android:name="com.google.android.gms.Vehicle"
android:label="@string/title_activity_vehicle" >
</activity>
如果您引用Google Play服务并拥有import com.google.android.gms.maps.CameraUpdate;
等导入,最好更改您的包名称。因此,将包名更改为更相关的更好。
`
使用显式意图。
显式意图指定组件以名称开头( 完全合格的班级名称)。您通常会使用明确的意图 在您自己的应用中启动组件,因为您知道类名 您想要开始的活动或服务。例如,开始一个新的 响应用户操作或启动服务下载的活动 文件在后台。
答案 1 :(得分:1)
试试这个..
将startActivity(new Intent("com.google.android.gms.Vehicle"));
更改为startActivity(new Intent(MainActivity.this,Vehicle.class));
private void destination_next_buttonClick()
{
startActivity(new Intent(MainActivity.this,Vehicle.class));
}
答案 2 :(得分:0)
尝试更改此行:
startActivity(new Intent("com.google.android.gms.Vehicle"));
到
Intent myIntent = new Intent(MainActivity.this, YourOtherActivity.class);
startActivity(myIntent);
尝试更改此
<activity
android:name="com.google.android.gms.Vehicle"
android:label="@string/title_activity_vehicle" >
<action android:name="com.google.android.gms.Vehicle" />
<category android:name="android.intent.category.DEFAULT" />
</activity>
到
<activity
android:name="com.google.android.gms.Vehicle"
android:label="@string/title_activity_vehicle" >
</activity>
最好更改您的包名称。 希望它会对你有所帮助。