2013-09-23 50 views
0

嘿,我想改變我的按鈕動作。我有3班。當我在開始點擊starttur時,我想要改變主類中的開始按鈕來停止,並且將按鈕的意圖改爲停止類,現在按鈕不起作用,我認爲這是因爲還沒有開始或停止聲明,但我如何製作第一個週期標誌?更改按鈕動作

如果用戶退出應用程序然後再次啓動應用程序,此項工作是否會執行?應用程序是否記得最後設置了哪個語句?

這是我的主類:

public class Main extends Activity{ 

Button bStart, bStop; 
TextView tvDate, tvKm; 
Spinner spinner1; 



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

    bStart = (Button) findViewById(R.id.bStart); 
    tvDate = (TextView) findViewById(R.id.tvDate); 
    tvKm = (TextView) findViewById(R.id.tvKm); 
    spinner1 = (Spinner) findViewById(R.id.spinner1); 

    if (menu.getStringExtra("start") != null) 
    { 
     String start = menu.getStringExtra("start"); 
     if (start.equals("started")) 
     { 
      bStart.setText("Stop"); 
      bStart.setOnClickListener(new View.OnClickListener() { 

       @Override 
       public void onClick(View v) { 
        // TODO Auto-generated method stub 

        Intent stop = new Intent("com.uniqueapps.runner.STOP"); 
        startActivity(stop); 
       } 
      }); 

     } 
     if (start.equals("stopped")) 
     { 
      bStart.setText("Start"); 
      bStart.setOnClickListener(new View.OnClickListener() { 

       @Override 
       public void onClick(View v) { 
        // TODO Auto-generated method stub 

        Intent start = new Intent("com.uniqueapps.runner.START"); 
        startActivity(start); 
       } 
      }); 
     } 
    } 

} 



@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 class Start extends Main implements OnClickListener { 

Button bStartTur; 
EditText etDate, etKm; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.start); 
    bStartTur = (Button) findViewById(R.id.bStartTur); 
    bStartTur.setOnClickListener(this); 
    etDate = (EditText) findViewById(R.id.etdate); 
    etKm = (EditText) findViewById(R.id.etKm); 

    Calendar cal = Calendar.getInstance(); 

    SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy"); 
    etDate.setText(format.format(new Date())); 

} 

@Override 
public void onClick(View v) { 
    // TODO Auto-generated method stub 

    switch (v.getId()) { 

    case R.id.bStartTur: 

     Intent menu = new Intent("com.uniqueapps.runner.MENU"); 
     menu.putExtra("start", "started"); 
     startActivity(menu); 

     break; 
    } 

} 

} 

這裏是我的止損類:

public class Stop extends Main implements OnClickListener { 

Button bStop; 
EditText locations, kilometer; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.stop); 
    bStop = (Button) findViewById(R.id.bstopTur); 
    bStop.setOnClickListener(this); 
    locations = (EditText) findViewById(R.id.locations); 
    kilometer = (EditText) findViewById(R.id.Kilometer); 




} 

@Override 
public void onClick(View v) { 
    // TODO Auto-generated method stub 
    switch(v.getId()){ 

    case R.id.bstopTur: 
     Intent menu = new Intent("com.uniqueapps.runner.MENU"); 
      menu.putExtra("start", "stopped"); 
      startActivity(menu); 
      break; 
    } 
} 

} 
+0

如果你告訴我們,你的最終目標,我們可能能夠找到一個更簡單的方法。你所做的事情聽起來可能會變得比它需要的更復雜。 – codeMagic

+0

我的最終目標是我想要改變主類中的按鈕。按鈕文本應更改爲在行程停止時啓動並在行程開始時停止。所以我想改變按鈕的文本,也是按鈕使用的意圖。 – Niller

回答

0

既然你想保留值甚至當程序關閉時,我建議您使用SharedPreferences。當您點擊Button時,您可以將值設置爲「停止」,然後在按下另一個Button時或在需要時將其更改回來。然後,您可以在要更改Button文本的課程的onResume()中檢查此值。

SharedPreferences Docs對如何創建,讀取和編輯SharedPreference值有很好的解釋。

And here is the full docs for SharedPreference

+0

好的,謝謝你的快速回答。那麼我是否像我在代碼中那樣改變了按鈕的意圖呢?還是我應該使用另一種方法? – Niller

+0

如果你這樣做,那麼除了開始一個「活動」之外,你不需要對Intent進行任何操作。然後,您只需在'Acitivty'的'onResume()'中查看'SharedPreference'的值,並相應地設置您的'Button'文本。 – codeMagic