2014-02-20 4 views
-2

Я делаю приложение списка дел, и когда я пытаюсь, он заставляет закрывать. Я проверил переменные, слушал все и до сих пор не смог найти ошибку. Я не знаю, чего я пропустил здесь, каждый тонкий выглядит по крайней мере для меня.Почему моя сила приложения закрывается?

Я добавил LogCat здесь

код Java:

public class MainActivity extends Activity { 

public final static String STOCK_SYMBOL = "com.rashad.mytodolist.MEMO"; 
private SharedPreferences MemoEntered; 
private TableLayout stockScrollView; 
private EditText stockSymbolEditText; 
Button enterStockSymbolButton; 
Button deleteStocksButton; 

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

    MemoEntered = getSharedPreferences("stockList", MODE_PRIVATE); 

    stockScrollView = (TableLayout) findViewById(R.id.stockScrollView); 
    stockSymbolEditText = (EditText) findViewById(R.id.stockSymbolEditText); 
    enterStockSymbolButton = (Button) findViewById(R.id.enterStockSymbolButton); 
    deleteStocksButton = (Button) findViewById(R.id.deleteStocksButton); 

    enterStockSymbolButton.setOnClickListener(enterStockButtonListener); 
    deleteStocksButton.setOnClickListener(deleteStocksButtonListener); 

    updateSavedStockList(null); 
} 

private void updateSavedStockList(String newStockSymbol) { 
    String[] memo = MemoEntered.getAll().keySet().toArray(new String[0]); 
    Arrays.sort(memo, String.CASE_INSENSITIVE_ORDER); 

    if (newStockSymbol != null) { 
     insertStockInScrollView(newStockSymbol, 
       Arrays.binarySearch(memo, newStockSymbol)); 
    } else { 
     for (int i = 0; i < memo.length; ++i) { 
      insertStockInScrollView(memo[i], i); 
     } 
    } 
} 

private void saveStockSymbol(String newStock) { 

    String isTheStockNew = MemoEntered.getString(newStock, null); 

    SharedPreferences.Editor preferencesEditor = MemoEntered.edit(); 
    preferencesEditor.putString(newStock, newStock); 
    preferencesEditor.apply(); 

    if (isTheStockNew == null) { 
     updateSavedStockList(newStock); 
    } 

} 

private void insertStockInScrollView(String stock, int arrayIndex) { 

    LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    View newStockRow = inflater.inflate(R.layout.memorow, null); 
    TextView newStockTextView = (TextView) newStockRow 
      .findViewById(R.id.stockSymbolTextView); 
    newStockTextView.setText(stock); 
    stockScrollView.addView(newStockRow, arrayIndex); 
} 

public OnClickListener enterStockButtonListener = new OnClickListener() { 

    @Override 
    public void onClick(View arg0) { 

     if (stockSymbolEditText.getText().length() > 0) { 
      saveStockSymbol(stockSymbolEditText.getText().toString()); 
      stockSymbolEditText.setText(""); 

      InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
      imm.hideSoftInputFromWindow(
        stockSymbolEditText.getWindowToken(), 0); 

     } else { 
      AlertDialog.Builder builder = new AlertDialog.Builder(
        MainActivity.this); 
      builder.setTitle(R.string.Nothing); 
      builder.setPositiveButton(R.string.ok, null); 
      builder.setMessage(R.string.Enter_memo); 
      AlertDialog theAlertDialog = builder.create(); 
      theAlertDialog.show(); 

     } 
    } 
}; 

public OnClickListener deleteStocksButtonListener = new OnClickListener() { 
    public void onClick(View v) { 
     stockScrollView.removeAllViews(); 
     SharedPreferences.Editor preferencesEditor = MemoEntered.edit(); 
     preferencesEditor.clear(); 
     preferencesEditor.apply(); 
    } 

}; 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 

    getMenuInflater().inflate(R.menu.main, menu); 

    menu.add(0, 1, 0, "about My ToDo"); 
    menu.add(0, 2, 1, "Quit"); 

    return true; 

} 

public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
    case 1: 

     Intent myIntent = new Intent(MainActivity.this, About.class); 
     MainActivity.this.startActivity(myIntent); 

     ; 
     return true; 
    case 2: 
     finish(); 
     return true; 
    } 
    return false; 
} 

}

XML файл:

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:id="@+id/TableLayout1" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".MainActivity" 
    android:background="#000000" > 

    <TableRow 
     android:id="@+id/tableRow1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" > 

     <EditText 
      android:id="@+id/stockSymbolEditText" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:ems="10" 
      android:inputType="text" 
      android:layout_weight="1"> 

      <requestFocus /> 
     </EditText> 

     <Button 
      android:id="@+id/enterStockSymbolButton" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="@string/Button" /> 

    </TableRow> 

    <TableRow 
     android:id="@+id/tableRow2" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="#006699" > 

     <TextView 
      android:id="@+id/stockSymbolTextView" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_span="2" 
      android:gravity="center_horizontal" 
      android:padding="5dp" 
      android:text="@string/List" 
      android:textColor="#000000" 
      /> 

    </TableRow> 

    <TableRow 
     android:id="@+id/tableRow3" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="#006699" 
     android:layout_weight="1" > 

     <ScrollView 
      android:id="@+id/stockScrollView" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_span="2" 
      android:padding="5dp" > 

      <TableLayout 
       android:id="@+id/tablememo" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:padding="5dp" 
       android:stretchColumns="yes" > 
      </TableLayout> 
     </ScrollView> 

    </TableRow> 

    <TableRow 
     android:id="@+id/tableRow7" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" > 

     <Button 
      android:id="@+id/deleteStocksButton" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_span="2" 
      android:layout_weight="1" 
      android:text="@string/Button1" /> 

    </TableRow> 

</TableLayout> 

LogCat для ошибки:

02-20 12:03:47.119: E/AndroidRuntime(2872): FATAL EXCEPTION: main 
02-20 12:03:47.119: E/AndroidRuntime(2872): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.rashad.mytodolist/com.rashad.mytodolist.MainActivity}: java.lang.ClassCastException: android.widget.ScrollView 
02-20 12:03:47.119: E/AndroidRuntime(2872):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1768) 
02-20 12:03:47.119: E/AndroidRuntime(2872):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1784) 
02-20 12:03:47.119: E/AndroidRuntime(2872):  at android.app.ActivityThread.access$1500(ActivityThread.java:123) 
02-20 12:03:47.119: E/AndroidRuntime(2872):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:939) 
02-20 12:03:47.119: E/AndroidRuntime(2872):  at android.os.Handler.dispatchMessage(Handler.java:99) 
02-20 12:03:47.119: E/AndroidRuntime(2872):  at android.os.Looper.loop(Looper.java:130) 
02-20 12:03:47.119: E/AndroidRuntime(2872):  at android.app.ActivityThread.main(ActivityThread.java:3835) 
02-20 12:03:47.119: E/AndroidRuntime(2872):  at java.lang.reflect.Method.invokeNative(Native Method) 
02-20 12:03:47.119: E/AndroidRuntime(2872):  at java.lang.reflect.Method.invoke(Method.java:507) 
02-20 12:03:47.119: E/AndroidRuntime(2872):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:864) 
02-20 12:03:47.119: E/AndroidRuntime(2872):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:622) 
02-20 12:03:47.119: E/AndroidRuntime(2872):  at dalvik.system.NativeStart.main(Native Method) 
02-20 12:03:47.119: E/AndroidRuntime(2872): Caused by: java.lang.ClassCastException: android.widget.ScrollView 
02-20 12:03:47.119: E/AndroidRuntime(2872):  at com.rashad.mytodolist.MainActivity.onCreate(MainActivity.java:44) 
02-20 12:03:47.119: E/AndroidRuntime(2872):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
02-20 12:03:47.119: E/AndroidRuntime(2872):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1722) 
02-20 12:03:47.119: E/AndroidRuntime(2872):  ... 11 more 
+9

У вас есть журнал ошибок? – berentrom

+3

logcat пожалуйста ... – SMR

+1

на какой линии вы получаете исключение? –

ответ

2
<ScrollView 
     android:id="@+id/stockScrollView" 

...

stockScrollView = (TableLayout) findViewById(R.id.stockScrollView); 

Вы не можете бросить ScrollView к TableLayout. Следовательно, java.lang.ClassCastException: android.widget.ScrollView в logcat.

Чтобы это исправить, изменить

private TableLayout stockScrollView; 

в

private ScrollView stockScrollView; 

и

stockScrollView = (TableLayout) findViewById(R.id.stockScrollView); 

в

stockScrollView = (ScrollView) findViewById(R.id.stockScrollView); 

Могут быть другие проблемы, но это, по крайней мере, один шаг вперед.

Как правило, вам нужно научиться самостоятельно отлаживать свои программы: когда есть исключение, найдите причину и местоположение из stacktrace в logcat. Теоретизируйте объяснение исключения. Протестируйте свою теорию, исправив теоретизированную проблему и снова запустив код. При необходимости повторите.

+0

, так как я могу его изменить? – mohamedrashad

+0

спасибо за это, и я новичок в xmls и java, так что простите меня. – mohamedrashad

Смежные вопросы