每次单击按钮时,我都在尝试创建一个新的FrameLayout。目前我手动实现了3个FrameLayouts,当我点击按钮时,所有3个都设置为可见。我现在想要的只是将一个FrameLayout设置为可见,然后如果再次单击该按钮,则显示第二个FrameLayout等.java代码:
public class MainActivity extends Activity {
public final static String EXTRA_MESSAGE = "com.example.viginti.MESSAGE";
int hoursValue;
int minutesValue;
int finalMinutes;
int finalHours;
int correctDivision;
int timeLeft;
int twentyFour;
int i, x;
NumberPicker np_hours;
NumberPicker np_minutes;
@Override
protected void onCreate( Bundle savedInstanceState ) {
super.onCreate( savedInstanceState );
setContentView( R.layout.activity_main );
fillArray();
}
@Override
public boolean onCreateOptionsMenu( Menu menu ) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate( R.menu.main, menu );
return true;
}
public void generateAnswer( View view ) {
hoursValue = np_hours.getValue();
minutesValue = np_minutes.getValue();
try {
twentyFour = 24;
correctDivision = 10;
finalMinutes = minutesValue / correctDivision;
finalHours = twentyFour - hoursValue;
timeLeft = finalHours - finalMinutes;
} catch( NumberFormatException e ) {
/** DEBUGGING */
System.out.println( "Number Format Exception: " + e );
}
String finalResult = Integer.toString( timeLeft );
Intent displayData = new Intent( this, DisplayData.class );
displayData.putExtra( EXTRA_MESSAGE, finalResult );
startActivity( displayData );
}
public void fillArray() {
np_hours = ( NumberPicker ) findViewById( R.id.hourNumber );
np_minutes = ( NumberPicker ) findViewById( R.id.minuteNumber );
String[] hoursArray = new String[25];
String[] minutesArray = new String[61];
for( i = 0; i < hoursArray.length; i++ ) {
hoursArray[i] = Integer.toString( i );
}
for( x = 0 ; x < minutesArray.length; x++ ){
minutesArray[x] = Integer.toString( x );
}
np_hours.setMinValue( 0 );
np_hours.setMaxValue( 24 );
np_hours.setWrapSelectorWheel( false );
np_hours.setDisplayedValues( hoursArray );
np_minutes.setMinValue( 0 );
np_minutes.setMaxValue( 60 );
np_minutes.setWrapSelectorWheel( false );
np_minutes.setDisplayedValues( minutesArray );
}
@SuppressLint("NewApi")
public void adActivity( View view ) {
//Add first frame
FrameLayout addActivities = ( FrameLayout )findViewById( R.id.frameLayout2 );
addActivities.setVisibility( View.VISIBLE );
//Add second frame
FrameLayout addActivities1 = ( FrameLayout )findViewById( R.id.frameLayout3 );
addActivities1.setVisibility( View.VISIBLE );
//Add third frame
FrameLayout addActivities2 = ( FrameLayout )findViewById( R.id.frameLayout4 );
addActivities2.setVisibility( View.VISIBLE );
fillArray();
}
}
XML:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<ImageView
android:id="@+id/featuredimage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="18dp"
android:clickable="true"
android:onClick="generateAnswer"
android:scaleType="centerCrop"
android:src="@drawable/generate_button" />
<ImageView
android:id="@+id/addActivity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_marginBottom="50dp"
android:clickable="true"
android:onClick="adActivity"
android:src="@drawable/add_activity" />
<FrameLayout
android:id="@+id/frameLayout1"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >
<Spinner
android:id="@+id/plan"
android:layout_width="121dp"
android:layout_height="wrap_content"
android:layout_marginLeft="0dp"
android:layout_marginTop="15dp"
android:entries="@array/daily_plans" />
<NumberPicker
android:id="@+id/hourNumber"
android:layout_width="40dp"
android:layout_height="70dp"
android:layout_marginLeft="24dp"/>
<NumberPicker
android:id="@+id/minuteNumber"
android:layout_width="40dp"
android:layout_height="70dp"
android:layout_marginLeft="10dp" />
</LinearLayout>
</FrameLayout>
<FrameLayout
android:id="@+id/frameLayout2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/frameLayout1"
android:visibility="gone">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >
<Spinner
android:id="@+id/plan1"
android:layout_width="121dp"
android:layout_height="wrap_content"
android:layout_marginLeft="0dp"
android:layout_marginTop="15dp"
android:entries="@array/daily_plans" />
<NumberPicker
android:id="@+id/hourNumber"
android:layout_width="40dp"
android:layout_height="70dp"
android:layout_marginLeft="24dp"/>
<NumberPicker
android:id="@+id/minuteNumber"
android:layout_width="40dp"
android:layout_height="70dp"
android:layout_marginLeft="10dp" />
</LinearLayout>
</FrameLayout>
<FrameLayout
android:id="@+id/frameLayout3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/frameLayout2"
android:visibility="gone">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >
<Spinner
android:id="@+id/plan1"
android:layout_width="121dp"
android:layout_height="wrap_content"
android:layout_marginLeft="0dp"
android:layout_marginTop="15dp"
android:entries="@array/daily_plans" />
<NumberPicker
android:id="@+id/hourNumber"
android:layout_width="40dp"
android:layout_height="70dp"
android:layout_marginLeft="24dp"/>
<NumberPicker
android:id="@+id/minuteNumber"
android:layout_width="40dp"
android:layout_height="70dp"
android:layout_marginLeft="10dp" />
</LinearLayout>
</FrameLayout>
<FrameLayout
android:id="@+id/frameLayout4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/frameLayout3"
android:visibility="gone">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >
<Spinner
android:id="@+id/plan1"
android:layout_width="121dp"
android:layout_height="wrap_content"
android:layout_marginLeft="0dp"
android:layout_marginTop="15dp"
android:entries="@array/daily_plans" />
<NumberPicker
android:id="@+id/hourNumber"
android:layout_width="40dp"
android:layout_height="70dp"
android:layout_marginLeft="24dp"/>
<NumberPicker
android:id="@+id/minuteNumber"
android:layout_width="40dp"
android:layout_height="70dp"
android:layout_marginLeft="10dp" />
</LinearLayout>
</FrameLayout>
</RelativeLayout>
值得一提的是,我对Android开发还很陌生。此外,如果每次单击按钮(并正确定位)时有更好的方法生成FrameLayouts,我很乐意听到!
非常感谢您的帮助!
答案 0 :(得分:1)
如果您的解决方案符合您的要求,那么您的解决方案没有任何问题。事实上,我喜欢你以编程方式添加小部件的解决方案,因为,
您可能希望将其全部放在滚动视图中,以防您无法在小屏幕上显示。