2017-09-27 72 views
0

主要活動應用程序試圖使用setOnClickListener當越來越墜毀

import android.app.FragmentManager; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 

import android.view.View; 


public class MainActivity extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
} 
public void button(View v) 
{ 
    FragmentManager fragmentManager=getFragmentManager(); 
    frag1 f1=new frag1(); 
    f1.show(fragmentManager,"TAG"); 
} 
} 

片段

import android.app.DialogFragment; 
import android.app.FragmentManager; 
import android.os.Bundle; 
import android.support.annotation.Nullable; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.Button; 
import android.widget.Toast; 

public class frag1 extends DialogFragment implements View.OnClickListener{ 
Button button; 
@Nullable 
@Override 
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup 
container, @Nullable Bundle savedInstanceState) { 
    return inflater.inflate(R.layout.frag1,container,false); 


} 

@Override 
public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 
    button= (Button) getActivity().findViewById(R.id.button); 
    button.setOnClickListener((View.OnClickListener) getActivity()); 

} 

@Override 
public void onClick(View v) { 

Toast.makeText(getActivity(),"working",Toast.LENGTH_LONG).show(); 
} 


} 

這是一個簡單的對話框代碼。

這是我從中學到的link。如果我只是通過調用按鈕來創建對話框,它會工作得很好。

+1

你的日誌說什麼? – TJBlack31

+0

而不是button.setOnClickListener((View.OnClickListener)getActivity());只需寫入button.setOnClickListener(this); –

回答

0
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup 
container, @Nullable Bundle savedInstanceState) { 
View view =inflater.inflate(R.layout.frag1,container,false); 
    button= (Button) View.findViewById(R.id.button); 

    button..setOnClickListener(new View.OnClickListener() 
    { 
     @Override 
     public void onClick(View v) 
     { 
      Toast.makeText(getActivity(),"working",Toast.LENGTH_LONG).show(); 
     } 
    }); 
    return view; 


} 
0

button.setOnClickListener((View.OnClickListener) getActivity()); 

更改線路

button.setOnClickListener(this); 

此外,使用

getSupportFragmentManager() to instead of getFragmentManager() 

,並導入

import android.support.v4.app.FragmentManager; 
相關問題