我对android开发很新。我正在尝试制作一个壁纸应用程序,但它在模拟器和真实设备(三星Galaxy S4迷你)崩溃。 这是我的MainActivity(只有一部分我实际上有超过50张图片)
import java.io.IOException;
import android.os.Bundle;
import android.app.Activity;
import android.app.WallpaperManager;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.ImageView;
public class MainActivity extends Activity implements OnClickListener {
ImageButton image1, image2, image3, image4, image5, image6, image7, image8, image9, image10,
ImageView display;
Button set;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initialize();
onClick();
}
public void initialize(){
image1 = (ImageButton) findViewById(R.id.button1);
image2 = (ImageButton) findViewById(R.id.button2);
image3 = (ImageButton) findViewById(R.id.button3);
image4 = (ImageButton) findViewById(R.id.button4);
image5 = (ImageButton) findViewById(R.id.button5);
image6 = (ImageButton) findViewById(R.id.button6);
image7 = (ImageButton) findViewById(R.id.button7);
image8 = (ImageButton) findViewById(R.id.button8);
image9 = (ImageButton) findViewById(R.id.button9);
}
public void onClick() {
image1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
setContentView(R.layout.second);
display.setImageResource(R.drawable.image1);
}
});
image2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
setContentView(R.layout.second);
display.setImageResource(R.drawable.image2);
}
});
image3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
setContentView(R.layout.second);
display.setImageResource(R.drawable.image3);
}
});
我的清单
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.acmilanwallpapersblueball"
android:versionCode="1"
android:versionName="1.0" android:installLocation="auto">
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="19" />
<uses-permission android:name="android.permission.SET_WALLPAPER" android:maxSdkVersion="19"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
<activity
android:configChanges="keyboardHidden|orientation"
android:name="com.acmilanwallpapersblueball.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
我已经尝试了几个方法来解决问题,但每次都会崩溃。我使用与此类似的代码创建了几个不同的应用程序,但每个应用程序都崩溃了。
答案 0 :(得分:4)
ImageView display
未初始化。此外,您在同一活动中不止一次setContentView
,这不是一个好的设计。
同样findViewById
查找当前膨胀布局中具有id的视图。所以你可能正在获得NPE。不确定显示是在activity_main.xml
还是second.xml
Button set
也未初始化。
I actually have over 50 images
您可以将listview与LazyLoading一起使用