2017-08-21 24 views
1

私のアプリケーションでは、ボタンaddActivityを押したときに動的に追加されるフラグメントのインスタンスActivityFragmentがあります。各ActivityFragmentにはdelete_buttonがあり、ActivityFragmentクラス内のこのボタンにはonClickListenerが設定されています。 delete_buttonが押されたら、onClickメソッドの中からフラグメントを削除します。 ActivityFragmentオブジェクトを作成し、それをフラグメントクラス外のメソッド内のアクティビティに追加すると、これをどうやって行うのですか? .remove()にはどのフィールドを使用しますか?自分自身からフラグメントを削除する方法

delete_buttonが唯一それがであるフラグメントのインスタンスを削除する必要があることを注意。

ここではActivityFragmentクラスと私のMainActivity.javaです。 addActivityボタンは下部にある:

import android.app.Fragment; 
import android.os.Bundle; 
import android.support.annotation.Nullable; 
import android.support.v4.app.FragmentActivity; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.Button; 
import android.widget.TextView; 

public class MainActivity extends FragmentActivity { 

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


    public static class ActivityFragment extends Fragment { 
     // @Nullable is used because the method may return a null value 
     @Nullable 
     @Override 
     public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) { 
      final View fragment1 = inflater.inflate(R.layout.activity_fragment, container, false); 

      Button edit_button = (Button) fragment1.findViewById(R.id.edit_button); 
      Button delete_button = (Button) fragment1.findViewById(R.id.delete_button); 

      edit_button.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        TextView activityText = (TextView) getView().findViewById(R.id.activity_text); 
        activityText.setText("success"); 
       } 
      }); 

      delete_button.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View v) { 
        getFragmentManager().beginTransaction() 
          .remove().commit(); 
       } 
      }); 

      return fragment1; 
     } 
    } 

    public void addActivity(View view) { 
     ActivityFragment myFragment = new ActivityFragment(); 
     getFragmentManager().beginTransaction() 
       .add(R.id.fragment_container, myFragment).commit(); 
    } 

} 

答えて

3

あなたはこの

delete_button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      getFragmentManager().beginTransaction() 
        .remove(ActivityFragment.this).commit(); 
     } 
    }); 
+0

私はまだAndroidのハングを取得しているので、 'ActivityFragment.this'が何をしているのか、それがどのように動作するのか正確にはわかりません。簡単に説明することができますか、これについてもっと読むことができるところへのリンクがありますか?本当にありがとう! –

+0

'ActivityFragment.this'は' ActivityFragment'オブジェクトの参照を取得し、これを使用して削除します。 –

0

のようなフラグメントは、このことによって除去することができるフラグメント・インスタンスを削除することができます

FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); 
MyFragment myFragment = new MyFragment(); 
fragmentTransaction.remove(myFragment).commit(); 

ここmyFragmentを現在のコンテキストまたは現在のアクティビティから削除したい "FRAGMENT"です。

関連する問題