2015-06-14 38 views
0

我試圖做到這一點: 當我點擊圖像按鈕然後它打開新的活動(命名:TakingPick.class)。 它崩潰,我不明白logcat。 我需要做些什麼才能使它工作?創建一個圖像按鈕,打開一個新的活動onclick粉碎

public class MainActivity extends ActionBarActivity { 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

} 

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

public void sendMessage(View view) { 
    Intent intent = new Intent(this, TakingPick.class); 
    startActivity(intent); 

} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    return false; 

} 

} 

XML:activity_main

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:layout_width="match_parent" 


     android:background="@drawable/bridgebg" 
      android:layout_height="match_parent" 
      android:orientation="vertical" > 

<ImageView 
    android:id="@+id/imageView1" 
    android:layout_width="300dp" 
    android:layout_height="300dp" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" 
    android:src="@drawable/bridgenew" /> 

<ImageButton 
    android:id="@+id/imageButton1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_centerHorizontal="true" 
    android:onClick="sendMessage" 
    android:layout_marginBottom="61dp" 
    android:src="@drawable/loginfacebook" /> 

的logcat的:

06-14 19:36:56.111: E/dalvikvm-heap(14770): Out of memory on a 354168112-byte allocation. 
06-14 19:36:56.211: E/AndroidRuntime(14770): FATAL EXCEPTION: main 
06-14 19:36:56.211: E/AndroidRuntime(14770): Process: idan.nir.debridge, PID: 14770 
06-14 19:36:56.211: E/AndroidRuntime(14770): java.lang.OutOfMemoryError 
06-14 19:36:56.211: E/AndroidRuntime(14770): at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method) 
06-14 19:36:56.211: E/AndroidRuntime(14770): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:677) 
06-14 19:36:56.211: E/AndroidRuntime(14770): at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:507) 
06-14 19:36:56.211: E/AndroidRuntime(14770): at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:872) 
06-14 19:36:56.211: E/AndroidRuntime(14770): at android.content.res.Resources.loadDrawable(Resources.java:3056) 
06-14 19:36:56.211: E/AndroidRuntime(14770): at android.content.res.Resources.getDrawable(Resources.java:1613) 
06-14 19:36:56.211: E/AndroidRuntime(14770): at com.android.internal.widget.ActionBarView.setIcon(ActionBarView.java:1016) 
06-14 19:36:56.211: E/AndroidRuntime(14770): at com.android.internal.policy.impl.PhoneWindow.setDefaultIcon(PhoneWindow.java:1543) 
06-14 19:36:56.211: E/AndroidRuntime(14770): at android.app.Activity.initActionBar(Activity.java:2001) 
06-14 19:36:56.211: E/AndroidRuntime(14770): at android.app.Activity.setContentView(Activity.java:2016) 
06-14 19:36:56.211: E/AndroidRuntime(14770): at idan.nir.debridge.TakingPick.onCreate(TakingPick.java:14) 
06-14 19:36:56.211: E/AndroidRuntime(14770): at android.app.Activity.performCreate(Activity.java:5431) 
06-14 19:36:56.211: E/AndroidRuntime(14770): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) 
06-14 19:36:56.211: E/AndroidRuntime(14770): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2269) 
06-14 19:36:56.211: E/AndroidRuntime(14770): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2363) 
06-14 19:36:56.211: E/AndroidRuntime(14770): at android.app.ActivityThread.access$900(ActivityThread.java:161) 
06-14 19:36:56.211: E/AndroidRuntime(14770): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1265) 
06-14 19:36:56.211: E/AndroidRuntime(14770): at android.os.Handler.dispatchMessage(Handler.java:102) 
06-14 19:36:56.211: E/AndroidRuntime(14770): at android.os.Looper.loop(Looper.java:157) 
06-14 19:36:56.211: E/AndroidRuntime(14770): at android.app.ActivityThread.main(ActivityThread.java:5356) 
06-14 19:36:56.211: E/AndroidRuntime(14770): at java.lang.reflect.Method.invokeNative(Native Method) 
06-14 19:36:56.211: E/AndroidRuntime(14770): at java.lang.reflect.Method.invoke(Method.java:515) 
06-14 19:36:56.211: E/AndroidRuntime(14770): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265) 
06-14 19:36:56.211: E/AndroidRuntime(14770): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081) 
06-14 19:36:56.211: E/AndroidRuntime(14770): at dalvik.system.NativeStart.main(Native Method) 

TakingPick

public class TakingPick extends Activity { 


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

} 


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

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    return false; 

} 
} 

xml:takingPick

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


</RelativeLayout> 
+0

你能展示TakingPick類的代碼嗎?有可能發生在那裏...... – ASP

+0

@ASP我現在添加它。謝謝 –

+0

Raunch看代碼一切看起來不錯...嘗試使用常規按鈕也嘗試更改sdk到其他版本,而建設 – ASP

回答

2

您的內存異常異常。您嘗試加載的位圖之一是很大,導致內存泄漏。 如果您使用可繪製資源,請確保它位於正確的可繪製目錄中。還可以嘗試減小圖像尺寸和分辨率

+0

編號小於500kb的照片 –

+0

確保您將資源文件放在正確的目錄中。例如,drawable-hdpi。如果你將一個mdpi圖像放在xxxhdpi目錄中,例如,android會將圖像調整到合適的大小,這可能會導致你現在遇到的內存泄露。另外,儘量避免將圖像放入默認的drawable文件夾,如果你不確定這個大小,把它放在「drawable-nodpi」目錄下,這樣android就不會操作這個圖片,只會照原樣使用它。 – DorAyalon

相關問題