【问题标题】:How to set Visibility for a button from another activity in android如何从android中的另一个活动设置按钮的可见性
【发布时间】:2014-01-24 19:44:51
【问题描述】:

我正在开发一个 android 应用程序,我试图在其中设置按钮的可见性 这里有两个活动

1) Activity2 包含诸如 note1、note2、note3 等按钮。 2) Activity1 在 click'g 上带有一个按钮,它将改变上述按钮的可见性,即 note1、note2、note3。

嘿,谁能帮帮我

活动 1: 公共类 Activity_2 扩展 Activity 实现 OnSeekBarChangeListener {

SeekBar sb1, sb2, sb3, sb4;
Button n1, n2, n3;

private TextView name1, name2, name3, name4, add_row,
          pro_a_e_name1, pro_a_e_name2, pro_a_e_name3, pro_a_e_name4,
          status1, status2, status3, status4;

private ProgressBar prg_br1, prg_br2, prg_br3, prg_br4;
private int prg_br_Status1=0, prg_br_Status2=0, prg_br_Status3=0, prg_br_Status4=0;


/*@Override
protected void onRestoreInstanceState(Bundle savedInstanceState)
{
    // TODO Auto-generated method stub
    super.onRestoreInstanceState(savedInstanceState);

    n1= (Button) findViewById(R.id.note1);

    Bundle bun1 = getIntent().getExtras();
    int val1 = bun1.getInt("VAL1");
    if(val1==1);
    {
       n1.setVisibility(View.VISIBLE);
    }

}

}

活动 2: 公共类 note1 扩展了 Activity {

@Override
protected void onCreate(Bundle savedInstanceState)
{

    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.note1);

    final TextView note1_1=(TextView)findViewById(R.id.note1_1);

    Bundle extras=getIntent().getExtras();
    String note1 = extras.getString("s1"); 
    note1_1.setText(note1); 

}


public void onBack(View v)
{
    Intent back1= new Intent(note1.this, Activity_2.class);
    Bundle b1= new Bundle();
    String VAL1 = null;
    b1.putInt(VAL1, 1);
    back1.putExtras(b1);
    startActivity(back1);   

}

}

除了改变可见性之外,这就是我正在尝试做的事情 切换顺序:Act1 到 Act2 到 Act3 到 Act4 在这里,我在回来时正在改变能见度 第四幕到第二幕

【问题讨论】:

  • 您可以通过在意图中传递数据或以共享首选项保存数据并在第二个活动的 Oncreate 方法中获取此数据来做到这一点。
  • 您所说的问题与您的编码不同。请澄清您将在哪里显示 note1 可见性?在 Activity1 中?

标签: android button visibility


【解决方案1】:

你可以试试这样的事情......

Button btn;
Button note1;

        btn.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub

                note1.setVisibility(View.GONE);

            }
        });

如果您需要在其他活动中做某事,只需通过意图传递数据。在另一个活动的 Oncreate() 上使用 Bundle 获取该值。

例如:

如果您在活动一中按下 note1 按钮,则为其设置一些默认值,然后将该值传递给其他活动。这样你就会知道点击了哪个按钮,然后你就可以按照我上面提到的那样设置它的可见性。

【讨论】:

    【解决方案2】:

    使用共享首选项来存储按钮的可见性,从 Activity1 更新首选项,并在 Activity2 中获取首选项并在 onResume() 函数中更新您的视图。

    【讨论】:

      【解决方案3】:

      这里我写的是伪代码

      活动一:

      1. 点击按钮
      2. 使用意图发送一些标志(可能是 0 或 1)或根据您的应用发送您的自定义数据。

      活动 2: 1.获取标志或您的自定义数据 2.根据您的数据类型将其放入整数或字符串 3. 如果 flag 为 0,则设置可见性,否则做一些事情

      【讨论】:

      • 先生,但是如果一个活动是由两个意图指向的,我该怎么办。意味着我们可以从另外两个活动切换到一个活动。这里面临同样的问题。我试图从 onResume 和 onRestart 方法中获取捆绑包,但它不起作用。你能帮我解决dis问题吗...
      • @PratikPatil 我真的理解你的痛苦,但我需要明确的信息以便我能提供更好的帮助,现在我不明白你的要求。
      【解决方案4】:

      有很多方法可以实现你想做的事情:

      1. 在调用startActivity(intent)方法之前使用intent的extra在activity之间传递数据

      2. 使用SharedPreference 存储Button 的状态,并使用Activity2 中存储的值。

      3. Activity1中创建publicstatic字段,然后在Activity2onResume()方法中使用它们来设置Button's的可见性

      4. 等等……

      【讨论】:

        【解决方案5】:

        在 Activity1 上执行此操作

        Button play;
        
            play = (Button) findViewById(R.id.playId);      
        
            play.setOnClickListener(new View.OnClickListener() {
        
            @Override
        
            public void onClick(View v) {
        
        
        
            Intent nextActivity = new Intent(Activity1.this, Activity2.class);
            Bundle bundle = new Bundle();
            bundle.putInt("VAL", 1);
        
            nextActivity.putExtras(bundle);
            startActivity(nextActivity);
        
            }
        
            });
        

        在 Activity2 上执行此操作:

        Bundle bun=getIntent().getExtras();
        int val=bun.getInt("VAL");
         .
         .
         .
        if(val==1)
        {
           note1.setVisibility(View.VISIBLE);
           note2.setVisibility(View.VISIBLE);
           note3.setVisibility(View.VISIBLE);
        }
        

        它会解决你的问题

        【讨论】:

        • 我尝试了 dis 但只是切换到活动。 Itz nt工作。这里 wen 试图在另一端获取捆绑包,它会引发异常。
        • @PratikPatil 它没有发生。我已经这样做了,然后我给了你代码。你能显示你的两个活动代码吗?它会帮助我你的问题在哪里。
        • 先生,但是如果一个活动是由两个意图指向的,我该怎么办。意味着我们可以从另外两个活动切换到一个活动。这里面临同样的问题。我试图从 onResume 和 onRestart 方法中获取捆绑包,但它不起作用。你能帮我解决dis问题吗...
        • 你的代码有很多问题。这里看起来像混淆。为了更好地查看,请在您的问题上发布两个活动代码。因此,编辑您的问题并发布两个不同的活动代码。还请澄清一个这个 Activity2 将显示可见按钮的权利吗?
        【解决方案6】:

        将上一个活动中的按钮设置为“静态”,并在后面的下一个活动中设置生存能力,例如previousActivity.Button.setVisibility(View.VISIBLE);

        我已经这样做并解决了我的问题

        【讨论】:

        • 不工作。因为使按钮的空指针异常。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-03-12
        • 2012-02-12
        • 2015-12-12
        • 2013-11-30
        • 1970-01-01
        • 2013-07-11
        • 1970-01-01
        相关资源
        最近更新 更多