链接按钮到下一个Android活动崩溃了应用程序

时间:2014-04-01 05:05:42

标签: java android eclipse android-intent

当我点击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)

3 个答案:

答案 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> 
  

最好更改您的包名称。       希望它会对你有所帮助。