我是安卓工作室的新手
我正在Android Studio中构建一个关于GIRDVIEW图像的程序。我设置了2 layout:- activity_main.xml:layout1以显示Girdview图像-- layout2:solo_picture.xml只显示一个Pictuter和1个Back按钮,以帮助返回布局1当用户单击它时,.I有MainActivity.java和MyImageAdapter.java (包括代码)--这是一个问题:当我单击Back按钮时,无法返回layout1。不过,我用了:
//want to use-save state values
Bundle myOriginalMemoryBundle;
myOriginalMemoryBundle = savedInstanceState;.
//设置后退按钮以返回到layout1 (GridView)
btnSoloBack = (Button) findViewById(R.id.btnSoloBack);
btnSoloBack.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// redraw the main screen showing the layout1
onCreate(myOriginalMemoryBundle);
}
});我不知道调试时为什么myOriginalMemoryBundle = NULL。之后,我的程序停止了,我不能返回layout1继续活动.帮帮你,求你..。非常感谢<3 MainActivity.java
public class MainActivity extends AppCompatActivity {
//GUI control bound to screen1 (holding GidView)
GridView gridview;
//GUI controls bound to screen2 (holding single ImageView)
TextView txtSoloMsg;
ImageView imgSoloPhoto;
Button btnSoloBack;
//in case you want to use-save state values
Bundle myOriginalMemoryBundle;
String[] items = {"Photo-1", "Photo-2", "Photo-3", "Photo-4", "Photo-5",
"Photo-6", "Photo-7", "Photo-8", "Photo-9", "Photo-10", "Photo-11",
"Photo-12", "Photo-13", "Photo-14", "Photo-15",};
Integer[] thumbnails={R.drawable.pic01_small,R.drawable.pic02_small,R.drawable.pic03_small,
R.drawable.pic04_small,R.drawable.pic05_small,R.drawable.pic06_small,
R.drawable.pic07_small,R.drawable.pic08_small,R.drawable.pic09_small,
R.drawable.pic11_small,R.drawable.pic11_small,R.drawable.pic12_small,
R.drawable.pic13_small,R.drawable.pic14_small,R.drawable.pic15_small};
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
myOriginalMemoryBundle = savedInstanceState;
setContentView(R.layout.activity_main);
// setup GridView with its custom adapter and listener
gridview = (GridView) findViewById(R.id.gridview);
gridview.setAdapter(new MyImageAdapter(this, thumbnails));
gridview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
showBigScreen(position);
}
});
}//onCreate
private void showBigScreen(int position) {
// show the selected picture as a single frame in the second layout
setContentView(R.layout.solo_picture);
// plumbing – second layout
txtSoloMsg = (TextView) findViewById(R.id.txtSoloMsg);
imgSoloPhoto = (ImageView) findViewById(R.id.imgSoloPhoto);
// set caption-and-large picture
txtSoloMsg.setText(" Position= " + position + " " + items[position]);
imgSoloPhoto.setImageResource( thumbnails[position] );
// set GO BACK button to return to layout1 (GridView)
btnSoloBack = (Button) findViewById(R.id.btnSoloBack);
btnSoloBack.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// redraw the main screen showing the GridView
onCreate(myOriginalMemoryBundle);
}
});
}// showBigScreen
}//ActivityMyImageAdapter.java
public class MyImageAdapter extends BaseAdapter{
private Context context; // main activity’s context
Integer[] smallImages; // thumbnail data set
public MyImageAdapter(Context mainActivityContext,
Integer[] thumbnails) {
context =mainActivityContext;
smallImages = thumbnails;
}
// how many entries are there in the data set?
public int getCount() {
return smallImages.length;
}
// what is in a given 'position' in the data set?
public Object getItem(int position) {
return smallImages[position];
}
// what is the ID of data item in given 'position‘?
public long getItemId(int position) {
return position;
}
// create a view for each thumbnail in the data set
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
// if possible, reuse (convertView) image already held in cache
if (convertView == null) {
// no previous version of thumbnail held in the scrapview holder
// define entry in res/values/dimens.xml for grid height,width in dips
// <dimen name="gridview_size">100dp</dimen>
// setLayoutParams will do conversion to physical pixels
imageView = new ImageView(context);
int gridsize = context.getResources().getDimensionPixelOffset(R.dimen.gridview_size);
imageView.setLayoutParams(new GridView.LayoutParams(gridsize, gridsize));
//imageView.setLayoutParams(new GridView.LayoutParams(100, 100));//NOT a good practice
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
imageView.setPadding(5, 5, 5, 5);
} else {
imageView = (ImageView) convertView;
}
imageView.setImageResource(smallImages[position]);
imageView.setId(position);
return imageView;
}//getView
}//MyImageAdapter发布于 2018-09-23 03:01:24
与在同一活动中定义第二个布局不同,您只需为布局"R.layout.solo_picture“定义另一个活动。
然后将选定的图像数据从activity1解析到activity2。
当您从activity2向后按回activity1时,Android将自动恢复您以前的数据。
对不起我的英语不好。英语不是我的主要语言。
使用意图解析活动之间的数据:
在activity1上:
Intent intent1 = new Intent(activity1.this, activity2.class);
intent1.putExtra("item", items[position]);
intent1.putExtra("thumbnail", thumbnails[position])
startActivity(intent1);在activity2上:
Intent intent = getIntent();
String item = intent.getIntExtra("item", "");
String thumbnail = intent.getStringExtra("thumbnail", 0);发布于 2018-09-23 03:45:34
为布局solo_picture.xml.定义另一个活动假设您有两个活动: MainActivity和Activity2,以及两个布局: activity_main.xml和solo_picture.xml。然后,用onCreate方法编写以下代码。
MainActivity.java
setContentView(R.layout.activity_main);
Button button = (Button) findViewById((R.id.btn1));
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, Activity2.class);
startActivity(intent);
}
});Activity2.java
setContentView(R.layout.activity2); // R.layout.solo_picture in your case
Button button = (Button) findViewById(R.id.btn2);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Activity2.this, MainActivity.class);
startActivity(intent);
}
});现在,您可以返回到第一个布局点击按钮2或按后退按钮的硬件。
确保编辑AndroidManifest.xml文件。在此文件中添加Activity2。
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".Activity2"></activity>https://stackoverflow.com/questions/52462404
复制相似问题