我有按钮1和按钮2。我还有2个TextViews,我有1个名为B的活动(按钮在活动A中)。
我希望单击按钮A,TextView A将显示在活动B中,当单击按钮B时,text2显示在活动B中。如下所示:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_A);
Button btn1 = (Button) findViewById(R.id.button1);
btn1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent i = new Intent(getBaseContext(), B.class);
TextView tv= (TextView) findViewById(R.id.text1);
startActivity(i);
}
});
Button btn2 = (Button) findViewById(R.id.button2);
btn2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent i = new Intent(getBaseContext(), B.class);
TextView tv= (TextView) findViewById(R.id.text2);
startActivity(i);
}
});
请记住,我有23个这样的按钮和23个文本。我怎么能这样做?
我怎样才能使用public static final string ??
答案 0 :(得分:1)
按类别表示活动,您要做的是将活动A中的文本发送到活动B,以便您在活动B中知道您在活动B中单击了哪个按钮,我是否正确? 让我们假设我,你必须额外添加一个额外的用于调用Activity B和Activity B内部检索那个意图String extra。
类似的东西:
活动A:
Intent i = new Intent(getBaseContext(), b.class);
TextView tv= (TextView) findViewById(R.id.text1);
i.putExtra(ActivityB.CALLER, tv.getText());
startActivity(i);
活动B:
public static final String CALLER = "caller";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.your_activity_b_layout);
String buttonText = getIntent().getStringExtra(CALLER);
}
答案 1 :(得分:0)
执行此操作的方法是在单击按钮A时在A类中触发某种标记。然后,当你启动B类时,你会传递一个Intent extra,通知Class B它应该显示TextView A.所以它会像这样。
在A类中,您需要听取按钮A的点击次数,并设置稍后发送给B级的相应变量。
public class A extends AppCompatActivity {
private boolean buttonWasClicked;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.a_activity);
buttonWasClicked = false;
Button buttonA = (Button) findViewById(R.id.buttonA);
buttonA.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
buttonWasClicked = true;
}
});
}
}
然后当你启动你的B类时,你会传递一个布尔额外的,意图通知clickA已被点击。像这样......
Intent intent = new Intent(this, B.class);
intent.putExtra("WasButtonClicked", buttonWasClicked);
startActivity(intent);
然后当B开始时,您将检索额外的内容并查看是否单击了buttonA。如果是,则显示TextView,如果没有,则隐藏它。
public class B extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.b_activity);
TextView textViewA = (TextView) findViewById(R.id.textViewA);
boolean buttonWasClicked;
Bundle args = getIntent().getExtras();
if(args != null) {
buttonWasClicked = args.getBooleanExtra("WasButtonClicked", false);
}
if(buttonWasClicked) {
textViewA.setVisibility(View.VISIBLE);
} else {
textViewA.setVisibility(View.INVISIBLE);
}
}
}
答案 2 :(得分:0)
从Activity
A,如果您点击了按钮,请通过捆绑包发送信息:
活动A)
btn1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(this, B.class);
intent.putExtra("buttonClicked1", true);
startActivity(intent);
}
});
Button btn2 = (Button) findViewById(R.id.button2);
btn2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(this, B.class);
intent.putExtra("buttonClicked2", true);
startActivity(intent);
}
});
在Activity
B中,接收一个布尔值,指示所选按钮buttonClicked1
或buttonClicked2
的内容,然后设置Strings.xml
文件中的相应文本。
活动B)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.your_activity_b_layout);
boolean buttonClicked1;
boolean buttonClicked2;
Bundle args = getIntent().getExtras();
if(args != null) {
buttonClicked1 = args.getBooleanExtra("buttonClicked1", false);
buttonClicked2 = args.getBooleanExtra("buttonClicked2", false);
}
if(buttonClicked1) {
//Load text from Strings.xml for button1.
String buttonText = getApplicationContext().getResources().getString(R.string.yourText1);
textViewA.setVisibility(View.VISIBLE);
} else if(buttonClicked2) {
//Load text from Strings.xml for button1.
String buttonText = getApplicationContext().getResources().getString(R.string.yourText2);
textViewA.setVisibility(View.VISIBLE);
}
}