2017-02-18 62 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

你說哪些活動? –

相關問題