我看过很多关于如何为 android 更改屏幕的教程,但我无法理解/完成所有这些教程,有人可以帮助我完成我的项目。我有四个 xml 文件 所有这些都有三个按钮,但只有两个按钮用于设置页面。我可以让应用程序加载任何其他页面(但随后无法创建按钮)(重要的一点)。 感谢您的帮助。
package com.store.shrek2;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends ActionBarActivity {
int activityloaded = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button1 = (Button) this.findViewById(R.id.button1);
Button button2 = (Button) this.findViewById(R.id.button2);
Button button3 = (Button) this.findViewById(R.id.button3);
Button button4 = (Button) this.findViewById(R.id.button4);
Button button5 = (Button) this.findViewById(R.id.button5);
Button button6 = (Button) this.findViewById(R.id.button6);
if(activityloaded == 1){
button1.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
}});
button2.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
activityloaded = 2;
}});
button3.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
activityloaded = 4;
setContentView(R.layout.activity4);
}});
}
if(activityloaded == 2){
setContentView(R.layout.activity2);
button4.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
setContentView(R.layout.activity3);
}});
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.store.shrek2"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="21" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".activity2"></activity>
<activity android:name=".activity3"></activity>
<activity android:name=".activity4"></activity>
</application>
</manifest>
最佳答案
请按照这些说明了解如何解决您的问题。
- 首先,创建一个 Activity - 将其命名为 MainActivity
- 其次,创建您的 fragment - 取决于它们的数量:
- 第三,为这些 fragment 创建各自的 xml 文件。
- 第四,假设您拥有的所有 fragment 都包含完全不同类型的 View - 如果它们不包含,您可以重用 fragment 并减少它们的数量。
- 我认为您的按钮位于主视图中 - 您可以在其中触摸它们以切换到新布局等。
由于您将使用您的主要 Activity 来管理您的 fragment ,
- 实现点击监听器并将其附加到您的按钮。
- 其次,切换按钮的 id(使用 switch 语句),当给定按钮被点击时,
- 为您各自的 fragment 创建一个新实例并设置它,或者换句话说,加载它以查看(添加)。您可以选择将它添加到后台堆栈,以便用户可以使用后退按钮轻松导航回它。
- 当有人点击另一个按钮时,比如 button2,除了加载正确的 fragment 外,执行与他们点击 button1 时相同的操作。
- 使用 fragment 的目的是能够重用它们。这也有助于您避免在 Activity 中做太多工作,因为 fragment 可以自行完成所有需要的工作。
示例代码: MainActivity.java
public class MainActivity extends Activity implements View.OnClickListener
{
private Button mLoadFragmentOne;
private Button mLoadFragmentTwo;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mLoadFragmentOne = (Button)findViewById(R.id.buttonOne);
mLoadFragmentTwo = (Button)findViewById(R.id.buttonTwo);
mLoadFragmentOne.setOnClickListener(this);
mLoadFragmentTwo.setOnClickListener(this);
}
@Override
public void onClick(View view)
{
switch(view.getId())
{
case R.id.buttonOne:
FragmentOne fragmentOne = new FragmentOne();
loadFragment(fragmentOne, "fragmentOne");
break;
case R.id.buttonTwo:
FragmentTwo fragmentTwo = new FragmentTwo();
loatFragment(fragmentTwo, "fragmentTwo");
break;
default:
break;
}
}
/**
* This fragment container will be part of the main view.
*/
public void loadFragment(Fragment frag, String tag)
{
FragmentManager fm = getFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
Fragment fragment = getFragmentManager().findFragmentById(R.id.fragmentContainer);
if(fragment == null)
{
ft.add(R.id.fragmentContainer, frag, tag);
} else
{
ft.replace(R.id.fragmentContainer, frag, tag);
}
ft.addToBackStack(null);
ft.commit();
}
}
FragmentOne.java
public class FragmentOne extends Fragment
{
private final String TAG = "com.example.app.FragmentOne";
private Activity mActivity;
public void onAttach(Activity act)
{
super.onAttach(act);
this.mActivity = act;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View view = inflater.inflate(R.layout.fragment_one, container, false);
//do whatever you want here - like adding a listview or anything
return view;
}
}
FragmentTwo.java
public class FragmentTwo extends Fragment
{
private final String TAG = "com.example.app.FragmentTwo";
private Activity mActivity;
@Override
public void onAttach(Activity act)
{
super.onAttach(act);
this.mActivity = act;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View view = inflator.inflate(R.layout.fragment_two, container, false);
//do whatever you want here - like set text to display in your fragment
return view;
}
}
现在,您只需使用此代码示例即可完成工作。
这里的重点是创建一个容器 - 例如主视图中的框架布局,给它一个 id,记住这是你的 fragment 将被加载的地方。
您必须添加其他内容,以便用户可以轻松地在 View 之间来回导航。
最后,请记住创建两个 fragment xml 文件 - 它们可以包含您希望用户看到的任何内容 - 例如图像、文本和列表或网格。这是您自己的选择。
这就是我能抽出的时间,希望对您有所帮助。
如果您按照这些说明一步步进行,您应该能够解决您的问题。祝你好运。
关于android - 如何使用 setcontent 通过按钮更改内容 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24946098/