【发布时间】:2015-08-13 12:49:10
【问题描述】:
我在通过另一个 Activity 设置按钮可见性时遇到问题
代码说明:
首先,menu.xml
<Button
android:id="@+id/f1"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_marginRight="10dp"
android:background="@drawable/button1"
android:visibility="visible" />
<ImageView
android:id="@+id/f2lock"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:src="@drawable/levellocked"
android:visibility="visible" />
<Button
android:id="@+id/f2"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:background="@drawable/button2"
android:visibility="gone" />
f2 按钮用于意图leveltwo.class,但仍设置为 GONE,
f2lock 是用于级别锁定的 ImageView
二、menu.java
public class menu extends Activity {
Button f1, f2;
ImageView f2lock;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.famouslevel);
f1 =(Button)findViewById(R.id.f1);
f1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v){
// TODO Auto-generated method stub
Intent level1 = new Intent ();
level1.setClassName ("com.example.game", "com.example.game.levelone");
startActivityForResult (level1, 0);
}
});
}
public void onActivityResult (int requestCode, int resultCode, Intent level1){
super.onActivityResult (requestCode, resultCode, level1);
f2=(Button)findViewById(R.id.f2);
f2lock=(ImageView)findViewById(R.id.f2lock);
switch (resultCode) {
case 2: f2.setVisibility(View.VISIBLE);
f2lock.setVisibility(View.GONE);
}
f2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v){
// TODO Auto-generated method stub
Intent level2 = new Intent ();
level2.setClassName ("com.example.game", "com.example.game.leveltwo");
startActivityForResult (level2, 0);
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.splashscreen, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
以下代码调用 levelone.java 并返回结果
所以在levelone.java 我把代码写成这样
public void onClick(View v){
setResult (2);
finish();
}
});
代码功能是当level.class为finish()时,将Result(2)发送给menu.class;
public void onActivityResult (int requestCode, int resultCode, Intent level1){
super.onActivityResult (requestCode, resultCode, level1);
f2=(Button)findViewById(R.id.f2);
f2lock=(ImageView)findViewById(R.id.f2lock);
switch (resultCode) {
case 2: f2.setVisibility(View.VISIBLE);
f2lock.setVisibility(View.GONE);
}
上面的代码是从levelone.class接收结果(2)并执行case 2函数
问题是如何在案例 2 中使用和设置 SharedPreferences?所以 f2 和 f2lock 可见性将被保存
因为我尝试了 SharedPreferences 代码但没有任何反应,f2 按钮仍然消失,f2lock imageview 仍然可见
我的意思是这样的:
就像游戏一样,当用户完成第 1 关后,第 2 关就会解锁
但是在这里我让按钮在 1 级完成后可见
【问题讨论】:
-
你好。我可以帮你解决这个问题,但有点困惑你到底在问什么。可能我是一只傻鹅,但仍然 - 请介意在评论中解释,或者对你的问题做一个 tl;dr,这样我就可以给你一个充分的回应,拜托。
-
我应该添加更多的抽象和更少的代码引用。
-
我的意思的代码就像一个普通的游戏兄弟,当关卡1完成时,关卡2被解锁
-
是的,我想我明白了!现在写一个答案。
-
@Sipty 兄弟你能帮我吗? stackoverflow.com/questions/32025103/…
标签: java android android-intent sharedpreferences