2017-12-13 16 views
1

これは私のgridViewのCardViewの1つで、他のアクティビティにリンクしたいのですが、エラーが発生するたびに(onClickListenerが赤に変わり、動作しません)、アプリケーションがクラッシュします。 。ImageViewまたはCardViewが別のアクティビティを開くonClick

ボタンとして使用するつもりイム

これらCardViewsを(私はすでに別のアクティビティに私の浮動ボタンをリンクしています) https://i.gyazo.com/581787f5fcba5355c9265a7b75a8f663.png

XML:

 <android.support.v7.widget.CardView 
      android:id="@+id/rowOneColOne" 
      android:layout_width="0dp" 
      android:layout_height="0dp" 
      android:layout_columnWeight="1" 
      android:layout_marginBottom="16dp" 
      android:layout_marginLeft="16dp" 
      android:layout_marginRight="16dp" 
      android:layout_rowWeight="1" 
      app:cardBackgroundColor="@color/gridBg" 
      app:cardCornerRadius="8dp" 
      app:cardElevation="8dp"> 


      <LinearLayout 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:layout_gravity="center_horizontal|center_vertical" 
       android:layout_margin="16dp" 
       android:orientation="vertical"> 

       <ImageView 
        android:id="@+id/imageView1" 
        android:layout_width="match_parent" 
        android:clickable="true" 
        android:layout_height="match_parent" 
        android:layout_gravity="center_horizontal" 
        android:src="@drawable/everythingaboutme" 
        /> 

      </LinearLayout> 


     </android.support.v7.widget.CardView> 

JAVA:あなたはImageViewのの結合とそのがのonCreateメソッド外にあるリスナーOnClickButton関数内で設定onclicklistener対応配置されていること

public class Home extends AppCompatActivity { 

private static ImageView imgview; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.activity_home); 



    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
    fab.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      { 
       Intent website = new Intent(Home.this , website.class); 
       startActivity(website); 

      } 


     } 
    }); 
} 

public void OnclickButtonListener() { 

    imgview = findViewById(R.id.imageView1); 

    imgview.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent Portfolio = new Intent(Home.this,Portfolio.class); 
      startActivity(Portfolio); 
     } 
    }); 
} 
+0

エラー/スタックトレースで投稿を編集する必要があります – codeMagic

+0

@codeMagicアプリをクラッシュさせずにそのカードビューを他のアクティビティにリンクする方法を知る必要があります:/ –

+1

そして、なぜそれが助けになるのかを知る必要がありますあなたが間違ったことを理解し、なぜそれが – codeMagic

答えて

1

バディ実現します。 あなたは関数を呼び出していますOnClickButtonListener();の中にを作成するonCreate実際にバインディングを登録し、その画像ビューにclicklistenerを設定するクラスのメソッド。

+0

もっと詳しく説明できますか...私は本当にあなたがcazを意味するのか分かりませんでした。私はちょうど初心者です –

+0

確実な友達。使用するすべての関数は、主にJavaクラスのonCreateメソッドから呼び出されます。したがって、OnClickButtonListener()関数を作成した後、onCreateメソッドでもこの関数を呼び出す必要があります。 "OnClickButtonListener();"という行を書きます。あなたのJavaクラスのonCreate(Bundle savedInstanceState)メソッド内で、関数は意図したとおりに呼び出されます。 – Robillo

関連する問題