2015-12-04 4 views
-1

У меня есть MainActivity.class которая в основном представляет собой сетку, содержащую все продукты. Когда пользователь нажимает на любой из этих продуктов, он отправляет его на страницу сведений, где перечислены сведения о продуктах.Передача строки из одной активности в другую

Я мог видеть объект ответа в виде строки и передать эту строку в ProductDetailActivity.class, я поставил точку останова в ProductDetailActivity.class, но он так и не появился. Я не уверен, что мне что-то не хватает или что-то не так.

MainActivity.class

final String URL = ".../productDetail.php"; 

    StringRequest postRequest = new StringRequest(Request.Method.POST, URL, 
      new Response.Listener<String>() { 
       @Override 
       public void onResponse(String response) { 
        try { 
         // response string received successfully and displayed on the console. 
         VolleyLog.v("Response:%n %s", response); 
         Intent intent = new Intent(MainActivity.this,ProductDetailActivity.class); 
         intent.putExtra("jsonArray", response); 
         MainActivity.this.startActivity(intent); 

        } catch (Exception e) { 
         e.printStackTrace(); 
        } 
       } 
      }, 
      new Response.ErrorListener() { 
       @Override 
       public void onErrorResponse(VolleyError error) { 
        error.printStackTrace(); 
       } 
      } 
    ) { 
     @Override 
     protected Map<String, String> getParams() 
     { 
      Map<String, String> params = new HashMap<>(); 
      params.put("id", records.get(position).getId()); 
      return params; 
     } 
    }; 

    CustomVolleyRequest.getInstance(this).getRequestQueue().add(postRequest); 

ProductDetailActivity.class

public class ProductDetailActivity extends Activity { 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.productdetail); 

    // break point placed in the following line, but never hit! 
    String jsonArray = getIntent().getStringExtra("jsonArray"); 
    } 
} 

Обновление:

После того как я тщательно отлаживать его, MainActivity.this.startActivity (намерение); что строка кода дает мне следующую ошибку:

Unable to find the explicit activity

ответ

2

Вы объявленную ProductDetailActivity в вашем AndroidManifest.xml?

< activity android:name="[path to you class].ProductDetailActivity.class" android:configChanges="keyboard|keyboardHidden" > 
< /activity> 

И вы убедитесь, что когда вы запрашиваете к "URL =" .../productDetail.php ";", onResponse функция должна назвать

+0

Я получил 'Не удается найти сообщение об ошибке явно activity'. Но ProductActivityDetail.class в том же пакете. Должен ли я еще объявить это в манифесте. – hotspring

+0

Я понимаю проблему, поэтому вы должны проверить свою активность в своем AndroidManifest.xml <активность android: name = "[путь к вам класс] .ProductDetailActivity.class" android: configChanges = "keyboard | keyboardHidden"> – Khang

+0

можете ли вы покажите мне имя пакета ProductDetailActivity class – Khang

0

Это как я это делаю:

Intent intent = new Intent(MainActivity.this,ProductDetailActivity.class); 
Bundle extras = new Bundle(); 
extras.putString("jsonArray", response); 
intent.putExtras(extras); 
startActivity(intent); 

Затем вы открываете его:

Bundle extras = getIntent().getExtras(); 
String jsonArray = extras.getString("jsonArray"); 
+0

Я только что увидел, что у ОП было неверное имя своего пакета Я думаю, что нет ничего плохого в том, как они проходили и извлекали строку. – Jay

+0

Как вы знаете, что это неверно? – hotspring

Смежные вопросы