Android Studio - 活动之间的导航

时间:2015-06-25 13:57:30

标签: android android-layout android-studio

我可能在某个地方犯了一个非常愚蠢的错误,这个问题可能看起来很愚蠢,但是,我无法弄清楚这种情况发生的原因。

我有一个带有ImageView的HomeActivity,当我点击它时,我需要转到DummyActivity(为了测试而创建)。 DummyActivity有一个带文本的文本视图,"这是一个虚拟页面"。但是,屏幕不会显示任何内容。

我是Android Studio的新手,但是,我猜它与它无关。

这是我的代码:

HomeActivity中的ImageView onClick:

 mImageView1 = (ImageView) findViewById(R.id.imageview_1);
 mImageView1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            Log.d("HomeActivity", "ImageView 1 Clicked");
            //startActivity(new Intent(HomeActivity.this, MainActivity.class));
            startActivity(new Intent(HomeActivity.this, DummyActivity.class));
        }
    });

DummyActivity onCreate():

public class DummyActivity extends AppCompatActivity{

@Override
public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) {
    super.onCreate(savedInstanceState, persistentState);
    setContentView(R.layout.activity_dummy);
}
}

activity_dummy.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="This is a dummy page"
        android:textAppearance="?android:attr/textAppearanceLarge" />
   </LinearLayout>

的AndroidManifest.xml

 <activity
        android:name=".DummyActivity"
        android:label="DummyActivity"></activity>

logcat显示,&#34; ImageView 1 Clicked&#34;,但之后没有任何内容。没有错误,没有。我在这做错了什么?

更新:更改了TextL的LinearLayout和textColor的backgroundColor,但更改没有反映。 Android Studio中的预览显示布局很好,但是,设备上的屏幕像以前一样空白,背景为黑色。

enter image description here enter image description here

不确定原因?

2 个答案:

答案 0 :(得分:2)

您已覆盖错误的onCreate()方法。改为使用这个:

public class DummyActivity extends AppCompatActivity{
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState, persistentState);
        setContentView(R.layout.activity_dummy);
    }
}

答案 1 :(得分:0)

您确定要更改活动吗?

在我的App中,我只使用一个Activity而是多个片段(参见Dialogfragment)。我的Activty就像所有其他片段和片段转换的管理器类一样。

在你的情况下,我会创建一个“homeFragment”并添加按钮回调,如

private void buttonSwitchToDummy()
{
    HomeActivity act = (HomeActivity) getActivity();
    act.replaceFragment(act.mDummyFragment);
}

将此添加到HomeActivity

public void replaceFragment(Fragment fragment, boolean deleteBackStack)
{
    if(fragment==null)
        return;
    FragmentManager fm = getSupportFragmentManager();
    if(deleteBackStack)
    {   
        // deletes the complete backstack and set fragment
        fm.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
    }
    FragmentTransaction transaction = fm.beginTransaction();
    // Replace whatever is in the fragment_container view with this fragment,
    // and add the transaction to the back stack so the user can navigate back
    transaction.replace(R.id.fragment_container, fragment);
    transaction.addToBackStack(null);
    // Commit the transaction
    transaction.commit();
}
相关问题