我想表现出进度被点击一个按钮时。当我测试的应用程序,它强制关闭/停止。我的应用程序正常工作前的进度code。在添加。
另外,我用一个切换按钮,如果使可能的问题,我想纺纱进度不是一个对话框。
任何帮助吗?
我在这里的code:
@覆盖
公共无效的onCreate(包savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.main);
按钮=(按钮)findViewById(R.id.buttonFlashlight);
上下文的背景下=这一点;
PackageManager下午= context.getPackageManager();
如果(!pm.hasSystemFeature(PackageManager.FEATURE_CAMERA)){
Log.e(犯错,设备没有摄像头!);
返回;
}
相机= Camera.open();
最终的参数P = camera.getParameters();
button.setOnClickListener(新OnClickListener(){
公共无效的onClick(查看为arg0){
如果(isLighOn){
progressBar1.setVisibility(View.INVISIBLE);
最后的MediaPlayer MP1 = MediaPlayer.create(getBaseContext(),R.drawable.click);
mp1.start();
Log.i(信息,火炬被关闭!);
p.setFlashMode(Parameters.FLASH_MODE_OFF);
camera.setParameters(对);
camera.stop preVIEW();
isLighOn = FALSE;
WindowManager.LayoutParams PARAMS = getWindow()的getAttributes()。
params.screenBrightness = 1.0F;
。getWindow()setAttributes(PARAMS);
} 其他 {
progressBar1.setVisibility(View.VISIBLE);
最后的MediaPlayer MP1 = MediaPlayer.create(getBaseContext(),R.drawable.click);
mp1.start();
Log.i(信息,火炬被打开!);
p.setFlashMode(Parameters.FLASH_MODE_TORCH);
camera.setParameters(对);
camera.start preVIEW();
isLighOn =真;
WindowManager.LayoutParams PARAMS = getWindow()的getAttributes()。
params.screenBrightness = 0.05f;
。getWindow()setAttributes(PARAMS);
}
}
});
}
解决方案
试试下面的code ...
handler1 =新的处理程序()
{
@覆盖
公共无效的handleMessage(信息MSG)
{
开关(msg.what)
{
情况1:
static_class.digi_pd = ProgressDialog.show(Create_Digitizing_Job.this,载入中...,请等待......,真,假);
static_class.digi_pd.setCancelable(假);
打破;
案例2:
static_class.digi_pd.dismiss();
打破;
}
}
};
线程1 =新的Thread()
{
@覆盖
公共无效的run()
{
尝试
{
handler1.sendEmptyMessage(1);
//在这里写你的code ....
handler1.sendEmptyMessage(3);
handler1.sendEmptyMessage(2);
}
赶上(例外五)
{
Log.w(线程错误......,+ E);
//e.printStackTrace();
}
}
};
thread1.start();
I am trying to show a progressbar when a button is clicked. When i test the app it force closes / stops. My app works fine before the progressbar code is added in.
also i am using a toggle button if that can matters, and i want the spinning progressbar not a dialog.
any help?
here my code:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
button = (Button) findViewById(R.id.buttonFlashlight);
Context context = this;
PackageManager pm = context.getPackageManager();
if (!pm.hasSystemFeature(PackageManager.FEATURE_CAMERA)) {
Log.e("err", "Device has no camera!");
return;
}
camera = Camera.open();
final Parameters p = camera.getParameters();
button.setOnClickListener(new OnClickListener() {
public void onClick(View arg0) {
if (isLighOn) {
progressBar1.setVisibility(View.INVISIBLE);
final MediaPlayer mp1=MediaPlayer.create(getBaseContext(), R.drawable.click);
mp1.start();
Log.i("info", "torch is turn off!");
p.setFlashMode(Parameters.FLASH_MODE_OFF);
camera.setParameters(p);
camera.stopPreview();
isLighOn = false;
WindowManager.LayoutParams params = getWindow().getAttributes();
params.screenBrightness = 1.0f;
getWindow().setAttributes(params);
} else {
progressBar1.setVisibility(View.VISIBLE);
final MediaPlayer mp1=MediaPlayer.create(getBaseContext(), R.drawable.click);
mp1.start();
Log.i("info", "torch is turn on!");
p.setFlashMode(Parameters.FLASH_MODE_TORCH);
camera.setParameters(p);
camera.startPreview();
isLighOn = true;
WindowManager.LayoutParams params = getWindow().getAttributes();
params.screenBrightness = 0.05f;
getWindow().setAttributes(params);
}
}
});
}
解决方案
try following code...
handler1 = new Handler()
{
@Override
public void handleMessage(Message msg)
{
switch(msg.what)
{
case 1:
static_class.digi_pd = ProgressDialog.show(Create_Digitizing_Job.this, "Loading...", "Please Wait..", true,false);
static_class.digi_pd.setCancelable(false);
break;
case 2:
static_class.digi_pd.dismiss();
break;
}
}
};
thread1 = new Thread()
{
@Override
public void run()
{
try
{
handler1.sendEmptyMessage(1);
// write your code here....
handler1.sendEmptyMessage(3);
handler1.sendEmptyMessage(2);
}
catch (Exception e)
{
Log.w("thread error...",""+e);
//e.printStackTrace();
}
}
};
thread1.start();