猿问

如何对多个 ImageView 使用 onClick 来启动其他活动

对于 JAVA 文件:


public class UserDataInputActivity extends AppCompatActivity

{

    @Override

    protected void onCreate(Bundle savedInstanceState)

    {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_user_data_input);

    }


    public void onGenericMenuClick(View view)

    {

        ImageView pastTests = (ImageView) findViewById(R.id.pasttests);

        final Intent intent1 =  new Intent(this, PastDiagnosticResult.class);

        ImageView userData = (ImageView) findViewById(R.id.myinfo);

        final Intent intent2 =  new Intent(this, UserDataInputActivity.class);

        ImageView currentTests = (ImageView) (findViewById(R.id.currenttest));

        final Intent intent3 =  new Intent(this, CurrentDiagnosticResultActivity.class);


        pastTests.setOnClickListener(new OnClickListener(){

            public void onClick(View view)

            {

                startActivity(intent1);

            }});

        userData.setOnClickListener(new OnClickListener(){

            public void onClick(View view)

            {

                startActivity(intent2);

            }});

        currentTests.setOnClickListener(new OnClickListener(){

            public void onClick(View view)

            {

                startActivity(intent3);

            }});

    }

}

我的屏幕底部基本上有 3 个图标(imageViews)。我的目标:当我单击菜单上的不同图像时导航到不同的屏幕。但是,我的 java 代码不能正常工作。虽然它可以运行,但在我尝试连续使用 Intents 2 和 3 后它会崩溃。有一个更好的方法吗?


翻阅古今
浏览 152回答 2
2回答

拉莫斯之舞

您没有onGenericMenuClick()按应有的方式使用。这是onClick()所有 3 个视图的共同点,因此您无需在其中定义新的侦听器。改成这样:public void onGenericMenuClick(View view) {    Intent intent;    if(v.getId() == R.id.pasttests) {        intent =  new Intent(this, PastDiagnosticResult.class);    } else if (v.getId() == R.id.myinfo) {        intent =  new Intent(this, UserDataInputActivity.class);    } else if (v.getId() == R.id.currenttest) {        intent =  new Intent(this, CurrentDiagnosticResultActivity.class);    }    startActivity(intent);}

摇曳的蔷薇

在这种情况下,您应该使用片段而不是活动。1.用片段替换三个Activity。2.FragmentManager用于在片段之间切换。UserDataInputFragment userDataInputFragment = UserDataInputFragment.newInstance("","");getSupportFragmentManager().beginTransaction()    .replace(R.id.fragment, userDataInputFragment, "userDataInputFragment")    .commit();    //here fragment in R.id.fragment is the container of Fragments
随时随地看视频慕课网APP

相关分类

Java
我要回答