在我的android應用程序中,我使用抽球獲取一些信息,然後動態創建佈局。問題是我想添加一個按鈕點擊偵聽器到動態創建的佈局視圖之一,但我必須等到凌空響應。這是一個按鈕點擊偵聽器,所以我不能把OnClickListener放在響應塊中,所以這裏是一個問題:如何理解何時生成響應並將OnClickListener放入其中?Android - 在排球響應生成時運行一段代碼
1
A
回答
1
試試這個,當你從凌空得到的數據:
button.performClick();
button.setPressed(true);
+0
也可以在btn.setOnclicklistener上執行您想要的操作 –
1
您可以使用廣播接收器得到通知時,你的數據被取出(或解析)。
你可以這樣做。
編寫一條廣播消息來告訴數據被提取。
你可以做這樣的事情在凌空你onResponse方法
public void onResponse(JSONObject response) {
try {
// Parsing
someMethod(); /// this is the method to notify idf data is fetched
} catch (JSONException e) {
e.printStackTrace();
}
}
的someMethod()
public void someMethod(){
Intent i = new Intent();
i.setAction("Some key");
sendBroadcast(i);
}
登記接收您的活動
BroadcastReceiver receiver = new YourReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction("Some key");
registerReceiver(receiver, filter);
最後一步:設置裏面的onReceive您buttonListener()的方法 接收機
private class YourReceiver extends BroadcastReceiver{
private Context context;
@Override
public void onReceive(Context context,Intent intent)
{
if(intent.getAction().equalsIgnoreCase("Some key"))
{
//Set your button listener here
}
}
}
注:致電您註冊接收器後您接收器(可避免這種常見的錯誤)。
這是starting point to learn Broadcast Receiver,如果你不知道他們。
`
0
過帳方法來發布凌空請求。在onResponse您可以根據需要你這樣的反應進行你的操作:
private void fetchData() {
StringRequest stringRequest = new StringRequest(mURL,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
if(expectedResponse){
Button mBtn=new Button(getApplicationContext());
mBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Conduct your operation here
}
});
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(VolleyExampleActivity.this, error.getMessage(), Toast.LENGTH_LONG).show();
}
});
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);
}
希望這有助於。
0
在響應塊,你也可以寫
Button dynamicButton = new Button(getActivity());
dynamicButton.setId(0X000000);
dynamicButton.setOnClickListener((View.OnClickListener)getActivity());
在點擊監聽器可以處理這樣
@Override
public void onClick(View v) {
switch (v.getId()){
case 0X000000:
Toast.makeText(getActivity(),"To something",Toast.LENGTH_LONG).show();
break;
}
}
我希望這幫助
相關問題
- 1. 在生成SOAP Web服務響應後運行Java代碼
- 2. 在運行時生成代碼
- 3. 運行時Orm代碼生成器
- 4. 運行時代碼生成和編譯
- 5. 是否有可能在運行時生成並運行TemplateHaskell生成的代碼?
- 6. 排球JSON響應
- 7. 運行代碼一段時間
- 8. Android排球訪問chaching響應數據
- 9. 在主程序運行時運行一段代碼
- 10. 在C#中運行一段代碼一段時間?
- 11. 運行「rails生成腳手架」時會運行什麼代碼?
- 12. Java代碼在運行時生成和執行,java.lang.NoClassDefFoundError
- 13. Android排球碼400
- 14. 響應代碼304和200時發生排氣異常錯誤
- 15. 從Android應用程序運行USSD代碼時發生MMI代碼錯誤
- 16. Android APK在運行時不會生成
- 17. 如何在運行時在.net winforms中生成代碼事件?
- 18. Retrofit2 - 全球檢查響應代碼
- 19. xtext代碼生成,如何避免代碼生成一行?
- 20. 代碼分析在biztalk 2009生成的代碼上運行
- 21. 生成VB.NET代碼來運行SSIS包?
- 22. 如何運行wxGlade生成的代碼
- 23. 運行由soapui生成的axis2代碼
- 24. 在C#中生成運行時代碼(結構體,類)#
- 25. 在運行時生成,編譯和使用Java代碼?
- 26. 在Linux shell腳本中生成運行時代碼
- 27. 在運行時生成機器指令的Hello世界代碼?
- 28. 如何在程序運行時生成並編譯C++代碼?
- 29. 在運行時生成代碼中的c#項目
- 30. 如何在運行時從代碼生成datagrid?
嗯,你爲什麼認爲你可以」在響應塊中設置點擊監聽器?沒有理由你不能。 –
你想知道什麼時候獲取信息嗎? –
@RohitSingh是的,正好。並運行一個像OnClickListener這樣的代碼,在完全加載java文件後需要滿足,所以我不能使用布爾值或類似的東西。 – NiethanX