umegusa's blog

備忘録

FragmentのViewをいじってみる

タブで動かせるようになったんでFragment部分のViewをいじってみます

ActivityとFragment

Javaxmlファイルはこんな感じになりました。

activity_main.xml

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.app.MainActivity"
    tools:ignore="MergeRootFrame" />

fragment_main.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:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="com.example.app.MainActivity$PlaceholderFragment">

<TextView
    android:text="tab1 test"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/textView" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="New Button"
        android:id="@+id/test_button"
        android:layout_below="@+id/textView"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/test_textfield"
        android:layout_below="@+id/test_button"
        android:layout_toRightOf="@+id/textView"
        android:layout_marginTop="61dp" />

</RelativeLayout>


MainActivity.Java

package com.example.app;

import android.app.ActionBar;
import android.app.Activity;
import android.os.Bundle;

public class MainActivity extends Activity{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final ActionBar actionBar = getActionBar();
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

        actionBar.addTab(actionBar.newTab().setText("Tab1").setTabListener(
                new MainTabListener<MainFragmentView>(
                        this, "flag1", MainFragmentView.class
                )
        ));

        actionBar.addTab(actionBar.newTab().setText("Tab2").setTabListener(
                new MainTabListener<SubFragmentView>(
                        this, "flag2", SubFragmentView.class
                )
        ));

    }
}

MainFragment.Java

package com.example.app;

import android.os.Bundle;
import android.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.TextView;

public class MainFragmentView extends Fragment{

    private TextView textView;

    @Override
    public View onCreateView(
            LayoutInflater inflater,
            ViewGroup container,
            Bundle savedInstanceState){

        View view = inflater.inflate(R.layout.fragment_main, container, false);
        textView = (TextView)view.findViewById(R.id.test_textfield);
        textView.setText("text test");
        Button button = (Button)view.findViewById(R.id.test_button);
        button.setText("change text!");

        button.setOnClickListener(button1onClickListener);

        return view;
    }

    View.OnClickListener button1onClickListener = new View.OnClickListener(){
        @Override
        public void onClick(View v){
            changeShowText("button click now!");
        }
    };


    public void changeShowText(String str){
        textView.setText(str);
    }

}


こんな感じでactivity_mainの上にあるFragmentをいじれるようになりました。
ここまでこれれば後は中身の実装していけばかけーぼはできそうですね。

書き方ってかなり独自になっている気がするけどこれで問題ないのかな。。。
間違ってたら誰か教えてください。

とりあえず

ActivityとFragmentを分けてFragment部分でViewの操作をすることができました。
このままかけーぼの完成目指してがんばります。

補足

前回の分とあわせてgithubにコミットできましたので公開。
https://github.com/kaisou4537/Mo

Windowsgithubのクライアントを配ってたけどそこで詰まったこともあったのでそれは後で書きます。