Android 我是安卓新手,如何将随机活动设置为结果按钮
除了Android 我是安卓新手,如何将随机活动设置为结果按钮,android,android-studio,random,Android,Android Studio,Random,除了main活动,我还有4项活动。 我添加了“结果”按钮,当用户单击该按钮时,将打开一个随机活动。 下面是我的MainActivity类及其XML: package tk.crazyapps.www.volleyupload; import android.app.ProgressDialog; import android.content.Intent; import android.graphics.Bitmap; import android.net
main活动
,我还有4项活动。
我添加了“结果”按钮,当用户单击该按钮时,将打开一个随机活动。
下面是我的MainActivity
类及其XML:
package tk.crazyapps.www.volleyupload;
import android.app.ProgressDialog;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.provider.MediaStore;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Base64;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;
import com.android.volley.AuthFailureError;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Hashtable;
import java.util.Map;
import java.util.Random;
主要活动:
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Button buttonChoose;
private Button buttonUpload;
private ImageView imageView;
private EditText editTextName;
private Bitmap bitmap;
private int PICK_IMAGE_REQUEST = 1;
private String UPLOAD_URL ="http://crazyapps.tk/VolleyUpload/upload.php";
private String KEY_IMAGE = "image";
private String KEY_NAME = "name";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
buttonChoose = (Button) findViewById(R.id.buttonChoose);
buttonUpload = (Button) findViewById(R.id.buttonUpload);
editTextName = (EditText) findViewById(R.id.editText);
imageView = (ImageView) findViewById(R.id.imageView);
buttonChoose.setOnClickListener(this);
buttonUpload.setOnClickListener(this);
}
public String getStringImage(Bitmap bmp){
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.JPEG, 100, baos);
byte[] imageBytes = baos.toByteArray();
String encodedImage = Base64.encodeToString(imageBytes, Base64.DEFAULT);
return encodedImage;
}
private void uploadImage(){
//Showing the progress dialog
final ProgressDialog loading = ProgressDialog.show(this,"Uploading...","Please wait...",false,false);
StringRequest stringRequest = new StringRequest(Request.Method.POST, UPLOAD_URL,
new Response.Listener<String>() {
@Override
public void onResponse(String s) {
//Disimissing the progress dialog
loading.dismiss();
//Showing toast message of the response
Toast.makeText(MainActivity.this, s , Toast.LENGTH_LONG).show();
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
//Dismissing the progress dialog
loading.dismiss();
//Showing toast
Toast.makeText(MainActivity.this, volleyError.getMessage().toString(), Toast.LENGTH_LONG).show();
}
}){
@Override
protected Map<String, String> getParams() throws AuthFailureError {
//Converting Bitmap to String
String image = getStringImage(bitmap);
//Getting Image Name
String name = editTextName.getText().toString().trim();
//Creating parameters
Map<String,String> params = new Hashtable<String, String>();
//Adding parameters
params.put(KEY_IMAGE, image);
params.put(KEY_NAME, name);
//returning parameters
return params;
}
};
//Creating a Request Queue
RequestQueue requestQueue = Volley.newRequestQueue(this);
//Adding request to the queue
requestQueue.add(stringRequest);
}
private void showFileChooser() {
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE_REQUEST);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null) {
Uri filePath = data.getData();
try {
//Getting the Bitmap from Gallery
bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), filePath);
//Setting the Bitmap to ImageView
imageView.setImageBitmap(bitmap);
} catch (IOException e) {
e.printStackTrace();
}
}
}
@Override
public void onClick(View v) {
if(v == buttonChoose){
showFileChooser();
}
if(v == buttonUpload){
uploadImage();
}
}
生成一个介于1和4之间的随机整数,并在if-elseif-elseif-else语句中使用它,每个开始的单个活动:)更好的做法是,使用一个使用寻呼机的活动,而不是创建活动的开销,其中每个页面都是一个片段,然后你只是随机设置位置“创建活动的开销”取决于这些活动应该做什么,也许它们完全不同。你的方法可能很好,但是,如果我确信在那一刻只有一个片段是可见的,为什么要使用带有4个片段的ViewPager呢?很简单,因为如果有4个页面,我认为一开始就一次性创建片段是值得的,然后,当从一个页面切换到另一个页面时,用户体验会很快,因为视图不一定会被破坏,片段和状态会保存在内存中。这适用于FragmentPagerAdapter,使用FragmentStatePagerAdapter还有另一种选择,它仅在需要保存内存时才保留状态。
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Choose Image"
android:id="@+id/buttonChoose" />
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:id="@+id/imageView" />
<EditText
android:id="@+id/editText"
android:hint="Enter ur Name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Upload Image"
android:id="@+id/buttonUpload" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Results"
android:id="@+id/buttonresult" />
int min = 0;
int max = 4;
Random r = new Random();
int random = r.nextInt(max - min + 1) + min;
switch (random) {
case 0:
// start activity 0
break;
case 1:
// start activity 1
break;
case 2:
// start activity 2
break;
case 3:
// start activity 3
break;
}