不幸的是[app name]已经停止了

时间:2014-01-27 06:10:01

标签: android

我的应用程序名称是timepass 以下文件是MainActivity.java

package com.example.timepass;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;



public class MainActivity extends Activity
 {
int counter;
Button add, sub;
TextView Display;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
counter=0;
add= (Button) findViewById(R.id.badd);
sub=(Button) findViewById(R.id.bsub);
Display=(TextView) findViewById(R.id.tvdisplay);
add.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
counter++;
Display.setText("Your total is " + counter);

    }
});

sub.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
counter--;
Display.setText("Your total is " + counter);
}
});


}

@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;
}

}

以下文件是activity_main.xml,该文件适用于上述文件MainActivity.java

<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"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" 
android:background="@drawable/pic_two">"

<Button
android:id="@+id/badd"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/tvdisplay"
android:layout_alignTop="@+id/bsub"
android:text="@string/but1"
android:textSize="20sp" />

<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/tvdisplay"
android:layout_alignRight="@+id/tvdisplay"
android:text="@string/hello_world"
android:textSize="@dimen/asa" />

<TextView
android:id="@+id/tvdisplay"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/textView2"
android:layout_centerHorizontal="true"
android:layout_marginTop="42dp"
android:gravity="center"
android:text="@string/str1"
android:textColor="@layout/activity_main"
android:textSize="30sp" />

<Button
android:id="@+id/bsub"
android:layout_width="100dp"
android:layout_height="wrap_content"
android:layout_alignRight="@+id/tvdisplay"
android:layout_below="@+id/tvdisplay"
android:layout_marginRight="38dp"
android:layout_marginTop="23dp"
android:text="@string/but2"
android:textSize="20sp" />
</RelativeLayout>

然后我创建了另一个活动,其下面是Splash.java

package com.example.timepass;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;

public class Splash extends Activity 
{

@Override
protected void onCreate(Bundle tpsavedInstanceState)
{
// TODO Auto-generated method stub
super.onCreate(tpsavedInstanceState);
setContentView(R.layout.splash);

Thread timer =new Thread()
{       
public void run()
{            
try
{

sleep(5000);
}
catch(InterruptedException e)
{   {
e.printStackTrace();

}
finally
{
Intent openMainActivity =new Intent("com.example.timepass.MAINACTIVITY");
startActivity(openMainActivity);
}
 } 
};

timer.start(); 
}

}

然后我创建了与Splash.java相关的Xml文件,即splash.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"     
android:background="@drawable/pic_background">
</LinearLayout>

现在我想先运行Splash.java文件然后运行MainActivity.java文件,这样我就在Androidmanifest.xml文件中做了一些更改 这里是更改,运行我的程序后,我收到错误“不幸的是timepass已停止”,其中timepass是我的应用程序名称。请解决此问题

的AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.timepass"
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.example.timepass.Splash"
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.example.timepass.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="com.example.timepass.MAINACTIVITY" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>

</application>
</manifest>

4 个答案:

答案 0 :(得分:1)

//就像这样做

Intent openMainActivity =new Intent(this,MainActivity.class);
startActivity(openMainActivity);

而不是

Intent openMainActivity =new Intent("com.example.timepass.MAINACTIVITY");
startActivity(openMainActivity);

答案 1 :(得分:0)

清单中的MainActivity用于两个地方。在一个地方,它是完全大写字母。改变并试一试

答案 2 :(得分:0)

您的Splash.java中{之前还有e.printStackTrace();。删除它,你会很高兴去。 同时在日志中发布日志错误

答案 3 :(得分:0)

在您的应用程序正常运行后,我已经编辑了您的AndroidManifest.xml更新代码。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.timepass"
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.example.timepass.Splash"
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.example.timepass.MainActivity"
android:label="@string/app_name" >
</activity>

</application>
</manifest>

更改splash.java中的代码

Intent i = new Intent(splash.this,MainActivity.class); startActivity(ⅰ);