2017-02-18 67 views
-1

我正在创建我的第一个应用程序,但是当我在设备中安装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模拟器,因为我的硬件已过时:/

+3

发布您的logcat –

+0

要使手机在Android Studio上显示,请转到设置 - 关于手机,然后在内部版本号上点击很多次。回到设置,你会看到一个新的开发者选项菜单项。输入那里并启用USB调试 –

+0

感谢@LeonardoAcevedo –

回答

1

我不能发表评论,所以我必须使用asnwers。

这是什么意思I can't even test on my device because it doesn't have the option to do so?为什么不能从Android Studio测试它?

除此之外,很多代码丢失。 Manifest中有许多Activity,但是您只发布了2个,看起来HomeonCreate未完成。

+0

现在你应该可以发表评论 – Marged

+0

@Marged圣,你刚刚upvote所有我的问题? – JonZarate

+1

至少是那些值得的;-)我认为你应该能够发表评论,而不必冒“-1”的风险,因为“误用”回答评论 – Marged

0

变化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***** 

    } 
} 
+0

我必须将getIntent()在Home Activity中还是不行? –

+0

您可以将数据从一个活动传递到下一个活动,然后使用getIntent()。 –

0

您直接在onCreate开始了您的活动,请尝试放置按钮并应用onClick方法打开您的新活动。像

Intent intent = new Intent(this, Home.class); 

button.setOnClickListener(new View.OnClickListener(){ 
    @override 
    public void onClick(View v){ 
     startActivity(intent); 
    } 
}); 

在此代码之前实例化您的按钮。

+0

这是不正确的 –

+0

你说哪些活动? –

相关问题