2016-06-16 36 views
0

我嘗試了很多方法,但仍無法正常工作。 幾乎使用了stackoverflow的答案中的所有方法。但不工作。如何從Listview中獲取其他活動的項目詳細信息

MainActivity.java

mProductList = new ArrayList<>(); 
     //add sample data to list 

     mProductList.add(new Product(1, "iPhone4", 200, "Apple1")); 
     mProductList.add(new Product(2, "iPhone5", 2100, "Apple2")); 
     mProductList.add(new Product(3, "iPhone6", 2020, "Apple3")); 
     mProductList.add(new Product(4, "iPhone7", 2400, "Apple4")); 
     mProductList.add(new Product(5, "iPhone8", 2050, "Apple5")); 
     mProductList.add(new Product(6, "iPhone9", 7200, "Apple6")); 

     //init adapter 
     adapter = new ProductListAdapter(getApplicationContext(), mProductList); 
     lvProduct.setAdapter(adapter); 


     lvProduct.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
       Toast.makeText(getApplicationContext(), "Clicked product id =" + view.getTag(), Toast.LENGTH_SHORT).show(); 

       Product item = (Product)lvProduct.getAdapter().getItem(position); 
       Log.d("abc",item.getName()); 

       Intent launchActivity1= new Intent(MainActivity.this,Show.class); 
       launchActivity1.putExtra("item", item.getName()); 
       startActivity(launchActivity1); 
      } 
     }); 

和Show.java

public class Show extends Activity { 

    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.show); 
    } 
    Intent launchActivity1 = getIntent(); 
    String item = launchActivity1.getStringExtra("item"); // this is line 17 
} 

當我在一個項目點擊顯示在登錄用 「的getName()」 函數項目名稱。 但在同一時間的應用程序崩潰,並顯示在17行Show.java錯誤

請幫我解決這個代碼。

此錯誤顯示登錄

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.io.Serializable android.content.Intent.getSerializableExtra(java.lang.String)' on a null object reference 
                       at com.example.sohaib.mydesign.Show.<init>(Show.java:17) 
+1

http://stackoverflow.com/questions/ 2736389 /如何通過一個對象從一個活動到另一個在Android – Pavya

+0

如果你想修復onCreate方法的結束括號,如果你可以[編輯]你的問題要做到這一點,幷包括完整的logcat –

+0

意圖爲空,因爲它不在方法中...... –

回答

0

你的代碼是onCreate方法之外!

Intent launchActivity1 = getIntent(); 
String item = launchActivity1.getStringExtra("item"); 

把這個放在裏面創建。另外onCreate沒有覆蓋註釋。

+0

它已經在裏面兄弟。 –

+0

並請告訴我如何創建onCreate覆蓋註釋 –

+0

在'onCreate'上方放上'@ Override' 您共享的代碼在Intent內部有Intent但在onCreate外部。再檢查一遍! – jitinsharma

0

在Show.java複製粘貼此代替

public class Show extends Activity { 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.show); 
    Intent launchActivity1 = getIntent(); 
    String item = launchActivity1.getStringExtra("item"); // this is line 17 
} 

}

+0

仍然沒有工作:( –

+0

'item.getName()'確實這個方法返回一個字符串? – jitinsharma

+0

是該方法返回的字符串時,我在產品項目移到我的光標在項目 –

0

它添加的OnCreate塊...

public class Show extends Activity { 
protected void onCreate(Bundle savedInstanceState) { 
      ................ 
      ................ 


    Intent launchActivity1 = getIntent(); 
    String item = launchActivity1.getStringExtra("item"); // this is line 17 
    } 
} 

或者,它發生在你傳遞對象而不是字符串。因此,使用

launchActivity1.putExtra("item", ""+item.getName()); 

感謝..

和的onclick應..

Product item = (Product)parent.getAdapter().getItem(position); 
+0

仍然沒有工作,但無論如何謝謝大家 –

+0

當我在 產品項目移到我的光標在項目=(產品)parent.getAdapter()的getItem(位置); 它說從來沒有使用可變'item' –

+0

和pa ges Mainactivity和Show.java in show.java它顯示可變的'item'永遠不會用在這一行... String item = launchActivity1.getStringExtra(「item」); –

0

我已經解決了我自己的問題。謝謝所有的你的快速反應......解決辦法是...

MainActivity.java

lvProduct.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
       Toast.makeText(getApplicationContext(), "Clicked product id =" + view.getTag(), Toast.LENGTH_SHORT).show(); 

       Product item = (Product)lvProduct.getAdapter().getItem(position); 

       Intent launchActivity1= new Intent(MainActivity.this,Show.class); 
       launchActivity1.putExtra("item", item.getName()); 
       startActivity(launchActivity1); 


      } 
     }); 

Show.java

public class Show extends Activity { 

    String passedVar = null; 
    private TextView passedView= null; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.show); 
     passedVar = getIntent().getStringExtra("item"); 
     passedView = (TextView) findViewById(R.id.pass); 
     passedView.setText("You= " + passedVar); 
    } 
} 
相關問題