2017-12-21 30 views
0

私は1つのアクティビティにボタンを動的にロードし、次のアクティビティがロードされるボタンのonClick()イベントをロードしています。以下のアクティビティではボタンに関する詳細を表示したいと思います。つまり、ユーザーがQUESTをクリックするとQUESTの詳細のみが表示され、ユーザーがSRLをクリックするとSRLの詳細のみが表示されます。私は得ることができません。誰も助けることができますか?ボレーを使用してIDに関連する特定の詳細を表示

public void loadDescriptionList() { 
    String url = "https://diagnostic.hisaabwaale.in/AndroidAppController/testGet"; 
    final ProgressDialog progressDialog = new ProgressDialog(TestDetails.this); 
    progressDialog.setMessage("Loading Data..."); 
    progressDialog.show(); 
    StringRequest stringRequest = new StringRequest(Request.Method.POST, url, 
      new Response.Listener<String>() { 
       @Override 
       public void onResponse(String response) { 
        progressDialog.dismiss(); 
        try { 
         obj = new JSONObject(response); 
         heroArray = obj.getJSONArray("list"); 
         for (int i = 0; i < heroArray.length(); i++) { 
          heroObject = heroArray.getJSONObject(i); 
          TDescription hero = new TDescription(heroObject.getString("test_code"), heroObject.getString("test_description"), heroObject.getString("test_price")); 
          heroList.add(hero); 
         } 
         adapter = new ListViewAdapter(heroList, getApplicationContext()); 
         listView.setAdapter(adapter); 
        } catch (JSONException e) { 
         progressDialog.dismiss(); 
         e.printStackTrace(); 
         Toast.makeText(getApplicationContext(), "No Records Found", Toast.LENGTH_LONG).show(); 
        } 
       } 
      }, 
      new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 
        progressDialog.dismiss(); 
        Toast.makeText(getApplicationContext(), "No Records Found", Toast.LENGTH_LONG).show(); 
       } 

      }) { 
     @Override 
     protected Map<String, String> getParams() { 
      Map<String, String> params = new HashMap<String, String>(); 
      params.put("franchise", franchise); 
      return params; 
     } 
    }; 
    RequestQueue requestQueue = Volley.newRequestQueue(this); 
    requestQueue.add(stringRequest); 
} 

バックエンドAPI

function testGet(){ 
    $response = array(); 
    $franchise = $this->input->post('franchise'); 
    $result = $this->testModel->testlist($franchise); 
    if($result != 0){ 
    $response['status'] = 200; 
    $response['list'] = $result; 
    }else{ 
    $response['status'] = 201; 
    $response['msg'] = 'No Records'; 
    } 
    echo json_encode($response); 
} 

このモデル

public function testlist($franchise) 
{ 
    $query = "SELECT t.id, t.franchise_id, t.test_code, t.test_description, t.test_price 
      FROM `".$this->table."` as t 
      WHERE t.franchise_id = ".$franchise; 
    $result = $this->db->query($query); 
    if($result->num_rows() > 0){ 
    return $result->result(); 
    }else{ 
    return 0; 
    } 

}

LOGCAT

12-22 00:24:34.459 22632-22632/hisaabwaale.in.hisaabwaale E/MultiWindowProxy: getServiceInstance failed! 
であります

12-22 00:24:37.574 22632-22632 /? E/MultiWindowProxy:getServiceInstanceが失敗しました! 12-22 00:24:37.696 22632-22632 /? E/MultiWindowProxy:getServiceInstanceが失敗しました! 12-22 00:24:38.637 22632-22863 /? E/NativeCrypto:ssl = 0xacc22880 cert_verify_callback x509_store_ctx = 0x9f0f9e4c arg = 0x0 12-22 00:24:38.637 22632-22863 /? E/NativeCrypto:ssl = 0xacc22880 cert_verify_callbackを呼び出すverifyCertificateChain authMethod = ECDHE_RSA 12-22 00:24:40.080 22632-22664 /? E/Surface:getSlotFromBufferLocked:未知のバッファ:0xa0921dc0 12-22 00:24:40.111 22632-22632 /? E /エラー:Failedorg.json.JSONException:インデックス2が範囲外です。[0..2) 12-22 00:24:40.255 22632-22664 /? E/Surface:getSlotFromBufferLocked:未知のバッファ:0xa0921640 12-22 00:24:55.343 22632-22632 /? E/MultiWindowProxy:getServiceInstanceが失敗しました! 12-22 00:24:55.452 22632-23164 /? E/Volley:[125517] NetworkDispatcher.run:未処理の例外java.lang.NullPointerException:ヌルオブジェクト参照で仮想メソッド 'int java.lang.String.length()'を呼び出そうとしました java.lang.NullPointerException: nullオブジェクトリファレンスで仮想メソッド 'int java.lang.String.length()'を呼び出します。 libcore.net.UriCodec.encode(UriCodec.java:132) at java.net.URLEncoder.encode(URLEncoder.java: 57) at com.android.volley.Request.encodeParameters(Request.java:484) at com.android.volley.Request.getBody(Request.java:470) at com.android.volley.toolbox.HurlStack。 addBodyIfExists(HurlStack.java:253) at com.android.volley.toolbox.HurlStack.setConnectionParametersForRequest(HurlStack.java:227) com.android.volley.NetworkDispatcherでcom.android.volley.toolbox.BasicNetwork.performRequest(BasicNetwork.java:97) でcom.android.volley.toolbox.HurlStack.performRequest(HurlStack.java:107) で。実行(NetworkDispatcher.java:114) 12-22 00:24:55.742 22632-22664 /?あなたは次のアクティビティ開くとき0xa0921aa0

+0

まあQUESTとSRLのためのIDは何ですか?あなたのAPIをPostmanでテストしたところ、SRLまたはQUESTを送信すると返信500の返答が返ってきました。私が整数を送ると '{" status ":201、msg": "No Records"} '私はPHPに慣れていませんが、あなたのJavaコードはうまく見えます。いずれかのQUEST/SRLボタンをクリックすると 'franchise = the_right_ID'となり、なぜ返事を返さないのか分かりません。 –

+0

@Stephen Lightcap:表示するレコードが表示されていません。 idは8と12です。 –

+0

@Aparana 'onErrorResponse'でVolley Errorを出力できますか? –

答えて

0
Button QUEST= (Button) findViewById(R.id.QUEST); 
QUEST.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     Intent mIntent = new Intent(this, Example.class); 
     Bundle extras = mIntent.getExtras(); 
     extras.putString('franchise', '8'); 

    } 
}); 

Button SRL= (Button) findViewById(R.id.SRL); 
SRL.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     //Same as other, just different franchise 
    } 
}); 

:E /表面:getSlotFromBufferLocked:不明バッファ

String franchise = getIntent().getExtras().getString(franchise) 

を次に多分それは、文字列を取る必要がありloadDescriptionList()を呼びますか?同様

loadDescriptionList(String franchise)、あなたは新しい活動開いたとき:

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    loadDescriptionList(getIntent().getExtras().getString(franchise)) 
} 

を私はloadDescriptionList()と呼ばれる次の活動にあると仮定しています。これがあなたを正しい方向に助けてくれることを願っています。あなたはまた、次のアクティビティに値を渡すには、以下のようなBundleを使用することができます

EDIT

Intent mIntent = new Intent(this, Example.class); 
Bundle mBundle = new Bundle(); 
mBundle.putString(key, value); 
mIntent.putExtras(mBundle); 
+0

しかし、私は動的にボタンを作成していますので、将来ボタンが増えるかどうかはわかりません。今私はちょうど2を持っています。 –

+0

はい、ボタンの作成をループしているときにクリックリスナーを追加できます。 [これを調べる](https://stackoverflow.com/questions/44680170/adding-a-different-putextra-to-an-intent-for-each-dynamically-created-button) –

+0

私はあなたが示唆したことを試みたが、 dbに存在する最後のIDが表示されています。 –