我正在开发一个Android Xamarin应用程序,其中我有一个带按钮的活动。按钮中的一些代码是:
fsp_SellDet_New_ByItemID fsp_SellDet_New_ByItemID = new fsp_SellDet_New_ByItemID(this);
fsp_SellDet_New_ByItemID.ExecuteNonQuery(_SellID,
_ItemID,
_PodID,
_ItemSellQty,
_ItemPrice,
_ItemPricePer,
-_BaseDiscount,
-_AdditionalDiscount,
_ItemSum,
_ItemVAT,
_ItemCode,
_ItemShortName,
_ItemBrand,
_ItemIssue);
Intent i = new Intent(this, typeof(SellDet));
StartActivity(i);
Finish();
我的问题是在ExecuteNonQuery方法中我已经在try和catch块中处理了异常,如下所示:
catch (Exception ex)
{
_dlgAlert = new AlertDialog.Builder(this).Create();
_dlgAlert.SetMessage(ex.Message);
_dlgAlert.SetTitle(Resources.GetString(Resource.String.Error));
_dlgAlert.SetButton("OK", delegate { });
_dlgAlert.Show();
return;
}
即使我正在使用“return;”,Android仍会打开下一个活动,因此我无法真正看到异常是什么,因为当AlertDialog出现时,下一个活动已经打开。
如果我在ExecuteNonQuery方法中收到异常,你能给我一些关于如何制作它的建议吗,会弹出一个AlertDialog,它不会进入下一个活动。
或者你可以告诉我如何制作它,这样你就必须在alertDialog上按“OK”然后它会进入激活状态。请记住,AlertDialog位于新创建的类中的executeNonQuery方法内,而不是按钮方法中。
提前谢谢
答案 0 :(得分:0)
有很多方法可以解决此问题。没有特别的顺序(如果您需要查看其中任何一个的编码示例,请告诉我们):
不要在ExecuteNonQuery()
中捕获异常,而是在调用方法中捕获它
如果发生异常,ExecuteNonQuery()
会返回一个bool,false
,如果没有,则true
。if
然后对StartActivity
代码
Action
检查
将ExecuteNonQuery()
传递到您要传递给_dlgAlert.SetButton("OK", delegate { /* Passed in Action executes here */ });
的空委托中的Action
,StartActvity
将from multiprocessing import Process, Queue
from time import sleep
id_list = [1,2,3,4,5,6,7,8,9,10]
queue = Queue()
def mp_worker(queue):
while queue.qsize() >0 :
record = queue.get()
print(record)
sleep(1)
print("worker closed")
def mp_handler():
# Spawn two processes, assigning the method to be executed
# and the input arguments (the queue)
processes = [Process(target=mp_worker, args=(queue,)) for _ in range(2)]
for process in processes:
process.start()
print('Process started')
for process in processes:
process.join()
if __name__ == '__main__':
for id in id_list:
queue.put(id)
mp_handler()
self.parent.current = main
其中的代码