我有一个非常简单的问题。我的主活动中有一个隐形按钮,我有第二个活动使该按钮可见。在第二个活动中,我没有问题设置按钮可见,但是当我返回主活动时按钮仍然是不可见的。
这是我的第二个活动。
Button button = (Button) inflatedView.findViewById(R.id.showButton);
if (button.getVisibility() == View.INVISIBLE){
button.setVisibility(View.VISIBLE);
}
这是MainActivity中的resume方法
@Override
protected void onResume() {
super.onResume();
}
我已经尝试在主活动中显示按钮,并且已经工作了。但是我想从第二堂课看到这个按钮。我已经尝试将Intent从第二个活动传递给Main Activity但我不知道如何在Main Activity中处理Intent。我无法在onResume()或onCreate()中处理Intent,因为它会抛出NullPointExeption
。
感谢您的帮助。
答案 0 :(得分:4)
您应该在两个活动之间建立通信。您可以使用startActivityForResult()
和onActivityResult()
MainActivity:
public class MainActivity extends Activity {
public static final int REQUEST_CODE_SECOND_ACTIVITY = 100; // This value can be any number. It doesn't matter at all. The only important thing is to have the same value you started the child activity with when you're checking the onActivityResult.
public static final String SHOW_BUTTON = "shouldShowButton";
private Button mMyButtonToBeHidden;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mMyButtonToBeHidden = (Button) findViewById(R.id.buttonToBeHidden);
findViewById(R.id.openSecondActivity).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivityForResult(new Intent(MainActivity.this, SecondActivity.class), REQUEST_CODE_SECOND_ACTIVITY);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE_SECOND_ACTIVITY && resultCode == RESULT_OK) {
//Check if you passed 'true' from the other activity to show the button, and also, only set visibility to VISIBLE if the view is not yet VISIBLE
if (data.hasExtra(SHOW_BUTTON) && data.getBooleanExtra(SHOW_BUTTON, false) && mMyButtonToBeHidden.getVisibility() != View.VISIBLE) {
mMyButtonToBeHidden.setVisibility(View.VISIBLE);
}
}
}
}
SecondActivity:
public class SecondActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
findViewById(R.id.hide_main_activity_button).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.putExtra(MainActivity.SHOW_BUTTON, true);
setResult(RESULT_OK, intent);
finish();
}
});
}
}
答案 1 :(得分:2)
在您的MainActivity的module.exports = function(grunt) {
// load grunt config
require('load-grunt-config')(grunt);
};
中试用此代码:
onResume()
在第二个活动中放置" your_parameter"仅当您想要使该按钮可见时,参数作为Intent的额外参数。
答案 2 :(得分:0)
解决问题。在第二个Activity a中有一个开始为false的静态布尔变量。一旦第二个Activity中的oncreate()被调用,布尔变量就会变为true。 MainActivity中的onresume()我检查布尔变量是否为true,并更改按钮的可见性。
SecondActivity
public static boolean showButton = false;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
showButton = true;
}
MainActivity
@Override
protected void onResume() {
if ( Display.showButton){
mMyButtonToBeHidden.setVisibility(View.VISIBLE);
}
super.onResume();
}