Android onClick和startActivity没有woking

时间:2016-05-24 08:53:11

标签: android onclick floating-action-button start-activity

 ImageView iconStartWorkout = new ImageView(this);
    iconStartWorkout.setImageResource(R.mipmap.ic_fitness_center_black_24dp);

    ImageView iconNewWorkout = new ImageView(this);

    iconNewWorkout.setImageResource(R.mipmap.ic_format_list_numbered_black_24dp);
    iconNewWorkout.setClickable(true);
    iconNewWorkout.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            startActivity(new Intent(this,AddDate.class));
        }
    });

iconStartWorkout是FloatingActionMenu的一部分。 Android工作室强调并说cannot resolve constructor'Intend [...]'

但是课程AddBase包含所有内容:

public class AddDate extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_add_date);
}}

我使用了startActivity( new Intent(this, sth.class));,它正在其他项目中工作..

编辑xml的1部分

<android.widget.ImageView
    android:id="@+id/NewWorkout"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@mipmap/ic_format_list_numbered_black_24dp"/>

我改变了mainActivity

 ImageView iconNewWorkout = new ImageView(R.id.NewWorkout);
//iconNewWorkout.setImageResource(R.mipmap.ic_format_list_numbered_black_24dp);

但强调R.id.NewWorkout并说in ImageView cannot be applied to (int)

3 个答案:

答案 0 :(得分:1)

试试这个,

iconNewWorkout.setOnClickListener(new View.OnClickListener() {
     @Override
     public void onClick(View v) {
        Intent i = new Intent(MainActivity.this , AddDate.class);
        startActivity(i);

       //OR
       //startActivity(new Intent(MainActivity.this,AddDate.class));
     }
  });

并检查您的manifest.xml

<activity
        android:name=".AddDate"/>

这可能对你有所帮助。

编辑1:

尝试提供

ImageView iconNewWorkout = new ImageView(R.id.YOUR_IMAGEVIEW_ID);

而不是

ImageView iconNewWorkout = new ImageView(this);

答案 1 :(得分:1)

您必须将ContextActivity传递给Intent。当您在this中使用oncliclListener时,表示您将onClickListener传递给Intent,这是不正确的。如果你在活动中使用这个:

new Intent(YOURACTIVITY.this,AddDate.class);

如果你是片段,你可以使用它:

new Intent(getApplicationContext(),AddDate.class);

编辑: 问题的第二部分是关于定义ImageView 您必须使用findViewById()方法找到您的观点,如下所示:

 ImageView iconNewWorkout =(ImageView) findViewById((R.id.NewWorkout);

答案 2 :(得分:1)

  

无法解析构造函数&#39; Intend [...]

我认为你的this有问题。你应该在那里传递你的当前活动名称。

Android 显式意图指定要从活动调用的组件。 你可以用这种方式,

 Intent intent = new Intent(Your_Current_class_Name, AddDate.class);
 startActivity(intent);