【问题标题】:One activity with two successor activities一项活动与两项后续活动
【发布时间】:2014-11-22 16:48:48
【问题描述】:

在我的主要活动(应用程序的启动窗口)中,我有 Button 和 Button_1。用户点击此处将打开Activity_1 并不重要。两个按钮的 Activity_1 相同。与 Activity_1 的不同之处取决于单击哪个按钮必须打开 Activity_2 或 Activity_3。

这里是场景。

Button   -> Activity 1 -> Activity 2
Button_1 -> Activity 1 -> Activity 3

除了知道点击了哪个按钮之外,我已经完成了所有工作。

Button.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
    Intent intent = new Intent(MainActivity.this, Menu.class);
    startActivity(intent);

}
});
Button1.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
    Intent intent = new Intent(MainActivity.this, Menu.class);
    startActivity(intent);

}
});

Menu.class 是带有图像和文本的列表视图。如果单击Button 并打开列表视图,用户可以单击项目并阅读一些信息。 如果点击Button_1,它会加载相同的列表视图,当用户点击项目时,应该会打开来自另一个活动的不同信息。

目前我可以成功打开Menu.class。在那里我加载了我的列表视图,我可以将信息传递给下一个活动,但只能传递给一个..

如何存储/知道按下了哪个按钮,以便根据此加载正确的活动。惠特IFcase?

    @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.menu);

    boolean isButton = getIntet().getExtra("isButtonClicked",false);
    if(isButton)
    {
     Intent intent = new Intent(Menu.this, Information.class);

        startActivity(intent);
    }
    else
    {
     Intent intent = new Intent(Menu.this, Information1.class);

        startActivity(intent);
    }
    // Download JSON File   
    new DownloadJSONFileAsync().execute();

}

【问题讨论】:

    标签: android listview android-activity


    【解决方案1】:

    通过intent.putExtra()方法将按钮点击信息传递给菜单活动,如下所示

    Button.setOnClickListener(new View.OnClickListener() {
    
    @Override
    public void onClick(View v) {
        Intent intent = new Intent(MainActivity.this, Menu.class);
        intent.putExtra("isButtonClicked",true);
        startActivity(intent);
    
    }
    });
    Button1.setOnClickListener(new View.OnClickListener() {
    
    @Override
    public void onClick(View v) {
        Intent intent = new Intent(MainActivity.this, Menu.class);
        intent.putExtra("isButtonClicked",false);
        startActivity(intent);
    }
    });
    

    在 Menu Activity 上的 onCreate() 方法获取点击的按钮

     boolean isButton = getIntent().getBooleanExtra("isButtonClicked",false);
    

    如果 isButton 值为 true,则单击按钮。否则 button1 被点击。然后通过

    开始新的活动
       if(isButton)
    {
     Intent intent = new Intent(Menu.this, Activity2.class);
    
        startActivity(intent);
    }
    else
    {
     Intent intent = new Intent(Menu.this, Activity3.class);
    
        startActivity(intent);
    }
    

    【讨论】:

    • If{}else{} 块应该在哪里?在活动 1 中?
    • 是来自菜单活动。抱歉现在已编辑检查我的答案
    • 我已经更新了我目前在Menu.class 中的问题,我如何将额外内容传递给 Information.class。
    • newActivity.putExtra("Position", Position); newActivity.putExtra("resultServer", resultServer);
    • boolean isButton = getIntet().getExtra("isButtonClicked",false); 我得到The method getIntet() is undefined for the type Menu
    【解决方案2】:

    您可以轻松使用intent.putExtra("value", true); 并在 Activity 1 onCreate 方法中

    boolean val = getIntent().getBooleanExtra("value", false);
    

    并根据 val 转到 Activity 2 或 3。

    【讨论】:

    • Value 必须是什么?
    【解决方案3】:

    您可以使用附加功能:

    Bundle bundle = new Bundle();
    bundle.putInt("btn", 1);
    
    Intent menu = new Intent(this, Menu.class);
    menu.putExtras(bundle);
    
    startActivity(menu);
    

    在另一个活动中:

    @Override
    public void onCreate(Bundle b){
       Bundle myBundle = getIntent().getExtras();
       if (myBundle.getInt("btn") == 1){
          // todos
       } else if (myBundle.getInt("btn") == 2){
          // todos 
       }
    }
    

    【讨论】:

      猜你喜欢
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-19
      • 1970-01-01
      • 2012-11-29
      • 1970-01-01
      • 1970-01-01
      • 2016-02-03
      相关资源
      最近更新 更多