2016-06-16 8 views
0

多くの方法を試しましたが、まだ動作していません。 ほとんどすべてのメソッドをstackoverflowの回答から使いました。動作しません。私は1つの項目をクリックすると他のアクティビティの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/how-to-one-from-one-activity-to-other-on-android – Pavya

+0

onCreateメソッドのエンドブラケットを修正したい場合は、[編集]それを行うにはあなたの質問と完全なlogcatを含める –

+0

方法の外にあるので、意図はnullです... –

答えて

0

あなたのコードは、のonCreateメソッドの外にあるに表示されます!

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

これを内部に入れます。また、onCreateにはオーバーライド注釈もありません。

+0

はすでに仲間に入っています。 –

+0

を作成し、オーバーライドアノテーションを作成する方法を教えてください –

+0

'onCreate'の上に' @ Override'を入れてください あなたが共有したコードにはアクティビティブロック内のインテントがありますが、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 
    } 
} 

それとも、渡すときに起こるこれを貼り付けます文字列の代わりにオブジェクト。 ..だから

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

はまだ働いていないが、私は 製品項目=(製品)parent.getAdapter()内の項目に私のカーソルを移動すると、あなたのすべての –

+0

に感謝のgetItem(位置);。 それが言いますvarriable 'item'は使用されません。 –

+0

とpa ges MainactivityとShow.java show.javaでこれはvarriable 'item'がこの行で使用されることはありません... String item = launchActivity1.getStringExtra( "item"); –

0

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

感謝..

とのonclickにする必要がありますを使用する私は自分自身で問題を解決しました。

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); 
    } 
} 
関連する問題