应用程序不在物理设备上运行
我正在创建我的第一个应用程序,但是当我在设备中安装apk文件时,它会在我尝试打开它时崩溃。我找不到问题,所以我会发布代码的开头。该应用程序与SplashActivity应用程序不在物理设备上运行
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class SplashActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
Intent intent = new Intent(this, Home.class);
startActivity(intent);
}
}
开始,然后在主页的活动应该开始
public class Home extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
getIntent();
String[] names= new String[]{"Albums","By Era", "Members", "Eddie", "Fan Arts", "Ed Force One"};
int []imageId = new int[]{R.drawable.albums, R.drawable.era, R.drawable.members, R.drawable.eddie, R.drawable.fanarts, R.drawable.edforceone };
CustomGrid adapter = new CustomGrid(Home.this, names, imageId);
final GridView grid_main = (GridView) findViewById(R.id.grid_main);
grid_main.setAdapter(adapter);
grid_main.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
// selection
String maincat="";
switch (grid_main.getCheckedItemPosition()){
case R.id.albums:
maincat="Albums";
break;
case R.id.era:
maincat="By Era";
break;
case R.id.member:
maincat="Members";
break;
case R.id.eddie:
maincat="Eddie";
break;
case R.id.arts:
maincat="Fan arts";
break;
case R.id.ed:
maincat="Ed Force One";
break;
}
//start different activities
if (maincat.equals("Eddie") || maincat.equals("Ed Force One") || maincat.equals("Fan arts")){
Intent intent= new Intent(Home.this, Pictures.class);
intent.putExtra("maincat", maincat);
startActivity(intent);}
else {
Intent intent= new Intent(Home.this, SubActivity.class);
intent.putExtra("maincat", maincat);
startActivity(intent);}
}
});
}
@Override
// overflow menu
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu1, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle item selection
switch (item.getItemId()) {
case R.id.about:
Intent intent= new Intent(Home.this, About.class);
startActivity(intent);
return true;
case R.id.contacts:
Intent intent2= new Intent(Home.this, Contacts.class);
startActivity(intent2);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
}
这里是清单的有关活动
<activity android:name=".Home">
</activity>
<activity
android:name=".SubActivity"
android:parentActivityName=".Home" />
<activity
android:name=".About"
android:parentActivityName=".Home" />
<activity
android:name=".Contacts"
android:parentActivityName=".Home" />
<activity
android:name=".Pictures"
android:parentActivityName=".Home">
</activity>
<activity
android:name=".ViewPic"
android:parentActivityName=".Home">
</activity>
<activity android:name=".SplashActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
的应用程序有一个巨大的资产文件夹中的一部分但即使删除它,应用程序也不会运行。我验证了minimun sdk版本(19)与我的Android设备版本(4.4)相同。必须说,我不能使用Android Studio模拟器,因为我的硬件已过时:/
我不能发表评论,所以我必须使用asnwers。
这是什么意思I can't even test on my device because it doesn't have the option to do so
?为什么不能从Android Studio测试它?
除此之外,很多代码丢失。 Manifest
中有许多Activity
,但是您只发布了2个,看起来Home
的onCreate
未完成。
变化SplashActivity.class:
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class SplashActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splash);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Intent i = new Intent(SplashActivity.this, Home.class);
startActivity(i);
finish();
}
}, 1000);
}
}
变化AndroidManifest:
<activity android:name=".SplashActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".Home"/>
变化Home.class:
public class Home extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
****Your code*****
}
}
我必须将getIntent()在Home Activity中还是不行? –
您可以将数据从一个活动传递到下一个活动,然后使用getIntent()。 –
您直接在onCreate
开始了您的活动,请尝试放置按钮并应用onClick
方法打开您的新活动。像
Intent intent = new Intent(this, Home.class);
button.setOnClickListener(new View.OnClickListener(){
@override
public void onClick(View v){
startActivity(intent);
}
});
在此代码之前实例化您的按钮。
这是不正确的 –
你说哪些活动? –
发布您的logcat –
要使手机在Android Studio上显示,请转到设置 - 关于手机,然后在内部版本号上点击很多次。回到设置,你会看到一个新的开发者选项菜单项。输入那里并启用USB调试 –
感谢@LeonardoAcevedo –