2014-09-15 1 views
0

버튼을 MenuActivity 레이아웃에 표시하고 if 문을 결정하는 것을 CapitalReceiver 클래스에 만들고 싶습니다. 나는 다양한 변수에 '정적'을 추가하려했지만 작동하지 않았다. 도와주세요!버튼을 표시 할 수 없습니다 (정적 참조와 관련하여 문제가 발생할 수 있음)

import android.support.v4.app.Fragment; 
import android.support.v4.content.LocalBroadcastManager; 
import android.text.format.DateFormat; 
import android.app.Activity; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.content.IntentFilter; 
import android.content.SharedPreferences; 
import android.graphics.Color; 
import android.os.Bundle; 
import android.preference.PreferenceManager; 
import android.view.LayoutInflater; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.TextView; 

public class MenuActivity extends Activity { 

    String status; 
    Boolean verified = false; 
    String textColour = "#000000"; 
    TextView mTvCapital; 
    ArrayAdapter<String> mAdapter; 
    Intent mServiceIntent; 
    CapitalReceiver mReceiver; 
    IntentFilter mFilter; 
    String country = "7ec47294ff3d8b74"; 




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

     SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this); 
     Button IDButton = (Button) findViewById(R.id.getIt); 
     Button RefreshButton = (Button) findViewById(R.id.refresh); 
     long updateTimeMillis = System.currentTimeMillis(); 
     String updateTime = (String) DateFormat.format("hh:mm", updateTimeMillis); 

     //If application has been submitted// 
     if(preferences.contains("first_middle_store") & !(verified)) { 
      status = "Status: Application pending. Last updated: " + updateTime; 
      IDButton.setVisibility(View.GONE); 
      RefreshButton.setVisibility(View.VISIBLE); 
      textColour = "#000000"; 
     } 

     //If application has not been submitted 
     else { 
      status = "Status: Application not yet submitted"; 
      IDButton.setVisibility(View.GONE); 
      RefreshButton.setVisibility(View.GONE); 
      textColour = "#000000"; 
     } 

     TextView text=(TextView)findViewById(R.id.application_status); 
     text.setTextColor(Color.parseColor(textColour)); 
     text.setText(status); 

     Button btnNextScreen = (Button) findViewById(R.id.verify); 

     //Listening to verify event 
       btnNextScreen.setOnClickListener(new View.OnClickListener() { 


       @Override 
       public void onClick(View v) { 
        // TODO Auto-generated method stub 
        Intent nextScreen = new Intent(getApplicationContext(), VerifyActivity.class); 
        startActivity(nextScreen); 
       } 
       }); 

     Button btnNextScreen2 = (Button) findViewById(R.id.how); 

     //Listening to HowItWorks event 
       btnNextScreen2.setOnClickListener(new View.OnClickListener() { 


       @Override 
       public void onClick(View v) { 
        // TODO Auto-generated method stub 
        Intent nextScreen2 = new Intent(getApplicationContext(), HowItWorksActivity.class); 
        startActivity(nextScreen2); 
       } 
       }); 


     //Listening to IDbutton event 
     IDButton.setOnClickListener(new View.OnClickListener() { 


       @Override 
       public void onClick(View v) { 
        // TODO Auto-generated method stub 
        Intent nextScreen3 = new Intent(getApplicationContext(), IDActivity.class); 
        startActivity(nextScreen3); 
       } 
       }); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 

     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     // Handle action bar item clicks here. The action bar will 
     // automatically handle clicks on the Home/Up button, so long 
     // as you specify a parent activity in AndroidManifest.xml. 
     int id = item.getItemId(); 
     if (id == R.id.action_settings) { 
      return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 



    /** 
    * A placeholder fragment containing a simple view. 
    */ 
    public static class PlaceholderFragment extends Fragment { 

     public PlaceholderFragment() { 
     } 

     @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, 
       Bundle savedInstanceState) { 
      View rootView = inflater.inflate(R.layout.menu_layout, container, false); 
      return rootView; 
     } 
    } 


    public void refresh(View view) { 
     // Getting reference to TextView 
     mTvCapital = (TextView) findViewById(R.id.tv_capital); 
     mTvCapital.setText("hello"); 

     // Creating an intent service 
     mServiceIntent = new Intent(getApplicationContext(), CapitalService.class); 

     mServiceIntent.putExtra(Constants.EXTRA_ANDROID_ID, country); 

     // Starting the CapitalService to fetch the capital of the country 
     startService(mServiceIntent); 

     // Instantiating BroadcastReceiver 
     mReceiver = new CapitalReceiver(); 

     // Creating an IntentFilter with action 
     mFilter = new IntentFilter(Constants.BROADCAST_ACTION); 

     // Registering BroadcastReceiver with this activity for the intent filter 
     LocalBroadcastManager.getInstance(getApplicationContext()).registerReceiver(mReceiver, mFilter); 

    } 


    // Defining a BroadcastReceiver 
    private static class CapitalReceiver extends BroadcastReceiver{ 

     @Override 
     public void onReceive(Context context, Intent intent) { 

      String capital = intent.getStringExtra(Constants.EXTRA_APPROVAL); 

      if(capital == "YES") { 

       //status = "Status: Application Approved";// 
       //IDButton.setVisibility(View.VISIBLE);// 
      } 
      else if(capital == "NO"){ 

       //status = "Status: Application Denied";// 

      } 


     }  
    } 

} 

답변

0

코드를 보면서 가능한 해결책은 ID 버튼을 전역 변수로 만드는 것입니다. 그런 다음이 MenuActivity의 다른 클래스에서 여전히 조작되도록하면서 onCreate에서 인스턴스화합니다. 도움이되기를 바랍니다.

+0

죄송합니다. 실제로 IDButton 인 것으로 가정합니다. 귀하의 질문에 대한 답변이 확실하지 않습니다. – AmaJayJB

관련 문제